对象的浅拷贝
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}
只要思想不滑坡,办法总比困难多!