2009-07-13 69 views
1

我正在编写一个小的JavaScript库,以使表单创建/验证更容易。这大多是借助javascript改进的借口。我在讨论如何接受用户输入来创建表单元素。散列vs特定参数

我正在寻找两种方法。一个是采取在几个预先确定的参数,例如标识,标签,值

另一种是采取在其中将用于写属性直入形式元素的单个对象。例如,如果我想传入id标签和值,我只需传入{id:'my_id',label:'my_label',value:'my_value}

第三种方法是将id,标签,选项,其中选项是一个对象,它做了我上面描述的。

眼下传递对象似乎最灵活的,但我不知道是否有任何严重的缺点这样做呢?我希望这可以很容易地用于大多数JavaScript用户。 有关最佳方式的任何想法?

回答

1

处理这种通常的方法是使用一个Options对象在你的第二选择。大多数需要选项的插件(和jQuery方法)都使用该模式。据我所知,这种方法没有缺点,而且作为处理选项的一种非常常见的方式,我不认为它很难用于其他方面。

方案3,也是可以接受的,如果你有一些绝对必须例如传递。 ID。正是在这种情况下,选项对象最常被用作函数的最终参数。

希望这有助于

0

可以支持,有一点两轮牛车的。您可以检查所有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数据源一起使用。

1

使用对象似乎是“标准”的方式来做到这一点在我研究的JS代码。

使用特定参数列表(添加了订购要求),当您拥有多个参数时,它们会很快失控。

如果您有一个“依赖”参数,例如只出现其他参数的某些值的参数,那么使用简单参数列表时尤其难看。

但是,在迭代对象的属性时要小心。获得非意图的继承元素很容易。 Douglas Crockford recommends使用hasOwnProperty()来检查这种情况。