哈希与特定参数

时间:2009-07-13 04:43:46

标签: javascript forms object creation

我正在编写一个小的javascript库,以便更轻松地创建表单/验证。这主要是借助javascript改善的借口。我正在讨论如何为表单元素创建接受用户输入。

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

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

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

现在传递一个物体似乎是最灵活的,但我想知道这是否有任何严重的缺点?我希望这对大多数JavaScript用户来说都很容易使用。 有关最佳方法的任何想法吗?

3 个答案:

答案 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数据源使用。