2012-02-13 61 views
5

我希望能夠使用下劃線的extend函數並實現特定的情況。默認情況下,extend將覆蓋目標的任何現有成員和源的目標成員。我對這個問題是我要保持目標和源完好雙方的初始化方法,所以我所做的就是大致爲:使用下劃線的_.extend(...)而不覆蓋某些目標的成員

addComponent: function(comp, init) { 
    var iF; 
    if (comp.initialize) { 
     iF = comp.initialize; 
     delete comp["initialize"]; 
    } 

    _.extend(this,comp); 

    if (iF) { 
     comp.initialize = iF; 
     comp.initialize.call(this,init); 
    } 

    return this; 
} 

這是正確的方式做到這一點 - 通過拆卸和重新安裝?我的意思是,我想保持下劃線完整,我不想用任何方法擴展它,因爲這是一個非常特殊的情況。你發現任何潛在的

回答

16

只是一個快速的想法,_.extend可以接收多種信號源:

_.extend(this, comp, { initialize:this.initialize }); 
+0

ohh ..這是一個很酷的 – preslavrachev 2012-02-13 07:27:03

17

我真的遲到了,但_.defaults是你所期待的。

+0

_.defaults只能做到一個級別。如果類似:{a:{b:「XYZ」}}和{a:{c:「TTT」}},那麼它將不起作用。是否有多級別的默認值? – murvinlai 2013-06-17 00:17:30

+1

@murvinlai是的,$ .extend。 – pilau 2013-07-03 10:41:02

相關問題