学生试图复制下划线的扩展功能

时间:2016-07-05 01:03:49

标签: javascript underscore.js

您好我正在尝试创建基于下划线的扩展功能。我不知道如何做到这一点。我已经成功创建了其他下划线属性的其他副本,但是这个只是没有提出任何想法。我希望有人可以解释如何使用原生javascript创建._extend以及它如何工作。这是起始帧。谢谢你提前。

var extend = function(obj){


}

2 个答案:

答案 0 :(得分:2)

Underscore extend方法基本上接受两个destinationsources参数,并返回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。