1

我正在编写一个小型 javascript 库以使表单创建/验证更容易。这主要是一个让 JavaScript 变得更好的借口。我正在讨论如何接受用户输入来创建表单元素。

我正在研究两种方法。一种是接受一些预先确定的参数,例如id,label,value

另一种是采用单个对象,该对象将用于将属性直接写入表单元素。因此,例如,如果我想传入 id 标签和值,我只需传入 {id : 'my_id', label : 'my_label', value : 'my_value}

第三个选项是接受 id、label、options 选项,其中 options 是一个执行我上面描述的对象。

现在传入一个对象似乎是最灵活的,但我想知道这是否有任何严重的缺点?我希望这对大多数 javascript 用户来说都易于使用。对最好的方法有什么想法吗?

4

3 回答 3

1

处理此问题的常用方法是使用选项对象,如您的第二选择。大多数需要选项的插件(和 jQuery 方法)都使用该模式。据我所知,这没有任何缺点,并且作为一种非常常见的处理选项的方式,我认为其他人使用它并不困难。

如果您有绝对必须传入的内容,例如选项 3 也是可以接受的。ID。就在这种情况下,options 对象最常被视为函数的最终参数。

希望这可以帮助

于 2009-07-13T04:49:38.860 回答
1

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

使用添加了排序要求的特定参数列表在您拥有多个参数时很快就会失控。

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

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

于 2009-07-13T04:55:53.650 回答
0

您可以同时支持这两者,但需要一点技巧。您可以检查传递给函数的所有参数

然后,您可以使用以下条件:

var func = function(){
    if(arguments[0].id) {
        id = arguments[0].id;
    } else {
        id = arguments[0];
    }

    // .. and so on ...
}

这基本上是说如果第一个参数是一个对象,则提取 id,否则直接使用该参数。

我更喜欢对象方式,它适合外部 JSON 数据源使用。

于 2009-07-13T04:51:23.317 回答