2010-06-27 34 views
3

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

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

回答

2

他们用这种方式编码它,它不是多余的。这是因为第一个对象传入的是被修改的对象,所以options中的所有属性都被复制到您作为第一个参数传入的匿名对象中。因此,您需要将返回值$.extend分配给某些东西,以便能够实际使用它。如果你做了它周围的其他方法:

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

然后分配多余的。还要注意,你传递对象的顺序很重要。通过这样做,你已经做到了,匿名对象基本上是“默认值”,options中的任何内容都会覆盖它们。

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