Javascript 使用下划线';扩展(…),而不覆盖某些目标';s成员

Javascript 使用下划线';扩展(…),而不覆盖某些目标';s成员,javascript,underscore.js,Javascript,Underscore.js,我希望能够使用下划线的extend函数并实现一个特定的案例。默认情况下,extend用源的现有成员覆盖目标的任何现有成员。我的问题是,我想保持目标和源的initialize方法不变,所以我所做的大致是: addComponent: function(comp, init) { var iF; if (comp.initialize) { iF = comp.initialize; delete comp["initialize"]; } _.

我希望能够使用下划线的
extend
函数并实现一个特定的案例。默认情况下,
extend
用源的现有成员覆盖目标的任何现有成员。我的问题是,我想保持目标和源的initialize方法不变,所以我所做的大致是:

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;
}

通过分离和重新连接,这是正确的方法吗?我的意思是,我想保持下划线不变,我不想用任何方法扩展它,因为这是一个非常特殊的情况。您是否发现了任何潜在的

只是一个简单的想法,
\uExtend
可以接受多个来源:

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

我参加聚会真的迟到了,但这正是你想要的。

\u默认值只能达到一个级别。如果类似于:{a:{b:{XYZ}}和{a:{c:{TTT}}的东西,那么它将不起作用。是否存在多级默认值?