对象的浅拷贝

发布时间 2023-04-11 14:15:31作者: Steven_YF
 let obj = {}
 let person =  {
     name: '张三',
     age : 18
 }

ES3方式

for(let key in person) {
	 obj[key] = person[key];
}
console.log(obj); //{name: '张三', age: 18}

ES5方式

 Object.getOwnPropertyNames(person) //获取对象属性的键名
 Object.getOwnPropertyDescriptor(person,'属性')  //获取单个对象的描述
 Object.defineProperty(person,'属性',{})  //在一个对象上定义一个新属性,或者修改一个已经存在的属性

Object.getOwnPropertyNames(person).forEach(item=>{
      let descript = Object.getOwnPropertyDescriptor(person,item);
       Object.defineProperty(obj,item,descript)
 })
console.log(obj); //{name: '张三', age: 18}

ES6方式

let person = {
        a: '张三',
        b: '李四'
    }
  console.log(Object.keys(obj));  //键名:(2) ['a', 'b']
  console.log(Object.values(obj)); // 键值:(2) ['张三', '李四']
  console.log(Object.entries(obj));  //键值对:(2) [Array(2), Array(2)]

// ES6 两种
 // 第一种键名方式
   for(let key of Object.keys(person)) {
         obj[key] = person[key];
   }
 // 第二种键值对方式
  for(let [key,value] of Object.entries(person)) {
       obj[key] = value;
  }
 console.log(obj); //{name: '张三', age: 18}