学生尝试复制下划线的扩展函数
Student attempting to replicating underscore's extend function
嗨,我正在尝试基于下划线创建扩展函数。 我不知道该怎么做。 我已经成功地创建了其他下划线属性的其他副本,但这个只是没有提出任何想法。 我希望有人能解释如何使用原生JavaScript创建._extend以及它是如何工作的。 这是起始框架。 提前谢谢。
var extend = function(obj){
}
下划线扩展方法基本上接受destination
和sources
两个参数,并返回destination
对象。要复制其功能,一个简单的 Object.assign 就可以了。
例如
var extendObject = function (destination, ...sources) {
return Object.assign(destination, ...sources);
}
如果您注意到,上面的方法使用 Rest 参数,该参数仅受 ES>= 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}
Object.keys(myObj) 给你一个数组,其中包含你对象中的所有键(属性名称)。然后,只需迭代此数组并根据键名称将源对象的值克隆到目标对象中即可。您可以像这样克隆对象键:
dest['someAttr'] = origin['someAttr'];
假设 origin.someAttr 的值为 5。完成上述操作后,您的"dest"对象也应该有一个值为 5 的 dest.someAttr。
相关文章:
- 为什么我需要为扩展函数设置构造函数
- 扩展函数返回内容的Javascript
- 我可以在 TypeScript 中扩展函数吗?
- 使用object.freeze()扩展函数对象-can't添加字段
- 在另一个.js文件中扩展函数
- 为什么这个扩展函数有效
- 我应该何时/为什么从 BackboneJS 模型/集合扩展函数返回
- 此代码中扩展函数的目的是什么
- 扩展函数(如 .all()、.final() 等是否有承诺标准?
- 如何使 XSLT Javascript 扩展函数返回节点集
- javascript中扩展函数的使用
- 为什么我的jQuery扩展's函数行为&;静态&;
- 如何在另一个匿名函数中扩展函数
- 扩展函数返回的属性
- 如何在JavaScript中使用许多方法扩展函数
- 扩展函数语法解释
- 合并函数接口,扩展函数原型
- Javascript可调用和原型可扩展函数
- Javascript-调用扩展函数时更改对象
- jQuery扩展函数根据条件保留链接