我正在编写一个小的javascript库,以便更轻松地创建表单/验证。这主要是借助javascript改善的借口。我正在讨论如何为表单元素创建接受用户输入。
我正在研究两种方法。一种是接受一些预先确定的参数,例如id,label,value
另一个是接受一个对象,该对象将用于直接将属性写入表单元素。例如,如果我想传入id标签和值,我只需传入{id:'my_id',label:'my_label',value:'my_value}
第三个选项是接受id,label,options,其中options是一个对象,它执行我上面描述的操作。
现在传递一个物体似乎是最灵活的,但我想知道这是否有任何严重的缺点?我希望这对大多数JavaScript用户来说都很容易使用。 有关最佳方法的任何想法吗?
答案 0 :(得分:1)
处理此问题的常用方法是使用选项对象,如第二种选择。大多数需要选项的插件(和jQuery方法)都使用该模式。据我所知,这并没有什么缺点,因为它是处理选项的一种非常常见的方式,我不认为对其他人来说很难使用。
选项3,如果您必须传递绝对必要的内容,也是可以接受的。 ID。就这种情况而言,选项对象最常见的是函数的最终参数。
希望这有帮助
答案 1 :(得分:1)
在我研究过的JS代码中,使用对象似乎是“标准”方法。
当您有多个参数时,使用特定参数列表(这会增加订购要求)会很快失控。
如果你有一个“依赖”参数,例如那些仅出现在另一个参数的某些值的参数,那么在使用简单的参数列表时这尤其难看。
但是,在迭代对象的属性时要小心。很容易获得非预期的继承元素。 Douglas Crockford recommends使用hasOwnProperty()来检查这种情况。
答案 2 :(得分:0)
你可以支持两者,有点hackery。您可以检查所有arguments passed to the function:
然后您可以使用以下条件:
var func = function(){
if(arguments[0].id) {
id = arguments[0].id;
} else {
id = arguments[0];
}
// .. and so on ...
}
这基本上说如果第一个参数是一个对象,则提取id,否则直接使用该参数。
我更喜欢对象方式,它适合外部JSON数据源使用。