在jQuery中,使用$ .extend(),这是多余的吗?

时间:2010-06-27 22:58:22

标签: javascript jquery jquery-plugins

嘿,我想知道是否设置一个等于$ .extend()的对象,但是将目标设置为同一个对象是多余的?

 setOptions(options = $.extend({
        classPrefix: 'imgareaselect',
        movable: true,
        resizable: true,
        parent: 'body',
        onInit: function () {},
        onSelectStart: function () {},
        onSelectChange: function () {},
        onSelectEnd: function () {}
    }, options));

1 个答案:

答案 0 :(得分:2)

他们对你进行编码的方式,并不是多余的。这是因为传入的第一个对象是被修改的对象,因此options中的所有属性都被复制到您传入的匿名对象作为第一个参数。因此,您需要通过实际使用它来将$.extend的返回值按顺序分配给某个东西。如果你以相反的方式完成它:

$.extend(options, { ... });

然后分配 是多余的。另请注意,传递对象的顺序非常重要。通过按照您的方式执行操作,匿名对象基本上是“默认值”,options中的任何内容都将覆盖它们。

最后,因为您将结果传递给对setOptions的调用(我假设在某处保存了值),您也不需要对options进行明确赋值。但这完全取决于setOptions做什么以及你需要什么options以后......