使用下划线的_.extend(...)而不覆盖某些目的地成员

时间:2012-02-13 07:17:36

标签: javascript underscore.js

我希望能够使用下划线的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;
}

这是正确的方法吗 - 通过拆卸和重新连接?我的意思是,我想保持下划线完整,我不想用任何方法扩展它,因为这是一个非常具体的情况。你发现了什么潜在的

2 个答案:

答案 0 :(得分:17)

只是一个简单的想法,_.extend可以接受多个来源:

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

答案 1 :(得分:17)

我参加派对的时间已经很晚了,但_.defaults正是你要找的。