原生js实现extend,作用类似jquery.extend
在JavaScript中,实现一个类似于jQuery的$.extend
方法的extend
函数可以通过递归地合并对象来完成。以下是一个简单的实现:
function extend() {
for (var i = 1; i < arguments.length; i++) {
for (var key in arguments[i]) {
if (arguments[i].hasOwnProperty(key)) {
if (typeof arguments[0][key] === 'object' && typeof arguments[i][key] === 'object') {
extend(arguments[0][key], arguments[i][key]);
} else {
arguments[0][key] = arguments[i][key];
}
}
}
}
return arguments[0];
}
// 使用示例
var obj1 = { a: 1, b: { c: 1 } };
var obj2 = { b: { d: 2 }, e: 3 };
var result = extend({}, obj1, obj2);
console.log(result); // 输出: { a: 1, b: { c: 1, d: 2 }, e: 3 }
这个extend
函数接受两个或更多对象作为参数,并将它们从左到右合并到第一个对象中。如果属性是对象,它会递归合并这些对象。如果属性是非对象或不存在于后面的对象中,则会覆盖前一个对象的属性值。
评论已关闭