你好js浅拷贝写一个js浅拷贝
你好,以下是一个简单的 JavaScript 浅拷贝函数:
function shallowCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
// 如果不是对象或者是 null,直接返回
return obj;
}
// 新建一个空对象或者数组
const newObj = Array.isArray(obj) ? [] : {};
// 遍历原对象的属性,拷贝到新对象上
for (let key in obj) {
if (obj.hasOwnProperty(key)) { // 排除继承属性
newObj[key] = obj[key];
}
}
return newObj;
}
示例:
const obj1 = {
name: 'Alice',
age: 20,
skills: ['JavaScript', 'CSS', 'HTML']
};
const obj2 = shallowCopy(obj1);
// 修改 obj2 的属性值
obj2.name = 'Bob';
obj2.skills.push('React');
console.log(obj1); // { name: 'Alice', age: 20, skills: [ 'JavaScript', 'CSS', 'HTML', 'React' ] }
console.log(obj2); // { name: 'Bob', age: 20, skills: [ 'JavaScript', 'CSS', 'HTML', 'React' ] }
可以看到,obj2 的属性值修改了,但是 obj1 的属性值没有发生变化。这就是浅拷贝的效果。
原文地址: https://www.cveoy.top/t/topic/bhtT 著作权归作者所有。请勿转载和采集!