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以後...