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

Pre*_*hev 5 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;
}
Run Code Online (Sandbox Code Playgroud)

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

biz*_*lop 17

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

_.extend( this, comp, { initialize:this.initialize });
Run Code Online (Sandbox Code Playgroud)


小智 17

我参加聚会真的很晚,但_.defaults你正在寻找.