我正在替换这一行,它创建了一个默认扩展的新对象和新属性:
var myObj = _.extend({}, objDefaults, myObj);
使用这些行,它们执行相同的操作但保持原始对象引用不变:
// Save the current properties
curProps = $.extend({}, myObj);
// Clear the current reference
for (prop in myObj) { if (myObj.hasOwnProperty(prop)) { delete myObj[prop]; } }
// Extend the original reference with defaults and the props
return $.extend(myObj, objDefaults, curProps)
这是实现这个目标的好方法吗?似乎它比必要的时间长。
编辑:如果我不清楚我的意思,这里是你可以称之为extendInPlace
的某种方法的测试:
var obj2 = myObj;
extendInPlace(myObj);
obj2 === myObj; // still the same reference