Appearance
浅拷贝
本节目标:理解“浅拷贝”的核心思路,并能把它用于实际开发或面试表达。 浅拷贝****特点
- 简单类型
Undefined,Null,Boolean,Number和String是存入堆,直接引用; object array则是存入栈中,通过复制指针(内存地址)来引用值;如果拷贝后的对象发生变化,原对象也会发生变化。
function shallowCopy(object) {
// 只拷贝对象
if (!object || typeof object !== "object") return;
// 根据 object 的类型判断是新建一个数组还是对象
let newObject = Array.isArray(object) ? [] : {};
// 遍历 object,并且判断是 object 的属性才拷贝
for (let key in object) {
if (object.hasOwnProperty(key)) {
newObject[key] = object[key];
}
}
return newObject;
}