JavaScript 中的 extend 方法是一种常用的对象拷贝方式,它可以将一个或多个源对象的所有可枚举属性复制到目标对象中,并返回目标对象。
extend 方法的实现方式主要有两种,一种是浅拷贝,另一种是深拷贝。浅拷贝只会复制一层属性,而深拷贝会复制所有的属性,这样就可以保证拷贝的对象和源对象完全一致。
我们来看一下浅拷贝的实现方式,它的实现原理很简单,就是遍历源对象,将其中的属性一个一个复制到目标对象中,返回目标对象。具体的实现代码如下:
function extend(target, source) {
for (var key in source) {
target[key] = source[key];
}
return target;
}
我们来看一下深拷贝的实现方式,它的实现原理是使用递归的方式,遍历源对象,将其中的属性一个一个复制到目标对象中,如果属性是对象,则需要继续递归,直到属性不是对象为止,返回目标对象。具体的实现代码如下:
function deepExtend(target, source) {
for (var key in source) {
if (typeof source[key] === 'object' && source[key] !== null) {
target[key] = deepExtend(target[key] || {}, source[key]);
} else {
target[key] = source[key];
}
}
return target;
}
JavaScript 中的 extend 方法是一种常用的对象拷贝方式,它可以将一个或多个源对象的所有可枚举属性复制到目标对象中,并返回目标对象。它的实现方式主要有两种,一种是浅拷贝,另一种是深拷贝。浅拷贝只会复制一层属性,而深拷贝会复制所有的属性,这样就可以保证拷贝的对象和源对象完全一致。