您好我正在尝试创建基于下划线的扩展功能。我不知道如何做到这一点。我已经成功创建了其他下划线属性的其他副本,但是这个只是没有提出任何想法。我希望有人可以解释如何使用原生javascript创建._extend以及它如何工作。这是起始帧。谢谢你提前。
var extend = function(obj){
}
答案 0 :(得分:2)
Underscore extend方法基本上接受两个destination
和sources
参数,并返回destination
个对象。要复制其功能,可以使用简单的Object.assign。
<强> E.g。强>
var extendObject = function (destination, ...sources) {
return Object.assign(destination, ...sources);
}
如果您注意到,上述方法使用Rest parameter,只有ES&gt; = 2015支持。如果您想支持较低版本的ES,您可以这样做,
var extendObject = function (destination, source) {
return Object.assign(destination, source);
}
<强>用法强>
var dest = {a: 1, b: 2};
var src1 = {c: 3, d: 4};
var src2 = {e: 5, f: 6};
// ES >= 2015
extendObject(dest, src1); //{a: 1, b: 2, c: 3, d: 4}
extendObject(dest, src1, src2); //{a: 1, b: 2, c: 3, d: 4, e: 5, f: 6}
// ES <= 5
extendObject(dest, src1); //{a: 1, b: 2, c: 3, d: 4}
extendObject(dest, src2); //{a: 1, b: 2, c: 3, d: 4, e: 5, f: 6}
答案 1 :(得分:0)
Object.keys(myObj)为您提供一个包含对象中所有键(属性名称)的数组。然后,只需迭代此数组并根据键名将源对象的值克隆到目标对象中。您可以像这样克隆对象键:
dest['someAttr'] = origin['someAttr'];
假设origin.someAttr的值为5.执行上述操作后,“dest”对象的dest.someAttr也应该为5。