你好,以下是一个简单的 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 的属性值没有发生变化。这就是浅拷贝的效果。

你好js浅拷贝写一个js浅拷贝

原文地址: https://www.cveoy.top/t/topic/bhtT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录