const user = { name: “Lydia”, age: 21 };
const admin = { admin: true, …user };
console.log(admin);
A: { admin: true, user: { name: “Lydia”, age: 21 } }
B: { admin: true, name: “Lydia”, age: 21 }
C: { admin: true, user: [“Lydia”, 21] }
D: { admin: true
扩展运算符…为对象的组合提供了可能,你可以复制对象中的键值对,然后把他们加到另外一个对象中去。
const person = { name: “Lydia” };
Object.defineProperty(person, “age”, { value: 21 });console.log(person);console.log(Object.keys(person));A: { name: “Lydia”, age: 21 }, [“name”, “age”]B: { name: “Lydia”, age: 21 }, [“name”]C: { name: “Lydia”}, [“name”, “age”]D: { name: “Lydia”}, [“age”]通过defineProperty 方法,我们可以给对象添加一个新属性,或者修改已存在的属性。而我们通过fefineProperty方法给对象添加一个属性后,属性默认为不可梅举not enumerable,Object.keys方法仅返回对象中可枚举enumerable的属性。因此只剩下了name。
用defineProperty方法添加的属性默认不可修改,你可以通过writable, configurable 和 enumerable属性来改变这一行为。这样的话, 相比于自己添加的属性,defineProperty方法添加的属性有了更多的控制权