嘿,我想知道是否设置一个等于$ .extend()的对象,但是将目标设置为同一个对象是多余的?
setOptions(options = $.extend({
classPrefix: 'imgareaselect',
movable: true,
resizable: true,
parent: 'body',
onInit: function () {},
onSelectStart: function () {},
onSelectChange: function () {},
onSelectEnd: function () {}
}, options));
答案 0 :(得分:2)
他们对你进行编码的方式,并不是多余的。这是因为传入的第一个对象是被修改的对象,因此options
中的所有属性都被复制到您传入的匿名对象作为第一个参数。因此,您需要通过实际使用它来将$.extend
的返回值按顺序分配给某个东西。如果你以相反的方式完成它:
$.extend(options, { ... });
然后分配 是多余的。另请注意,传递对象的顺序非常重要。通过按照您的方式执行操作,匿名对象基本上是“默认值”,options
中的任何内容都将覆盖它们。
最后,因为您将结果传递给对setOptions
的调用(我假设在某处保存了值),您也不需要对options
进行明确赋值。但这完全取决于setOptions
做什么以及你需要什么options
以后......