Using underscore's _.extend(...) without overriding some of the destination's members
Solution 1
Just a quick idea, _.extend
can accept multiple sources:
_.extend( this, comp, { initialize:this.initialize });
Solution 2
I am really late to the party, but _.defaults
is what you were looking for.
Preslav Rachev
Making the good old Web meet the new Web, one app at a time. A software engineer, entrepreneur, and educator. The tech mind behind http://murmel.social
Updated on August 24, 2022Comments
-
Preslav Rachev over 1 year
I would like to be able to use underscore's
extend
function and implement a specific case. By default,extend
overrides any existing member of the destination with that of the source. My problem with this is that I want to keep the initialize method of both the destination and the source intact, so what I did was roughly: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; }
Is this the proper way to do it - by detaching and reattaching? I mean, I want to keep underscore intact, and I don't want to extend it with any methods, because this is a very specific case. Do you spot any potential