Skip to content

输出是什么?

javascript
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"]

答案: B

解析:

通过defineProperty方法,我们可以给对象添加一个新属性,或者修改已经存在的属性。而我们使用defineProperty方法给对象添加了一个属性之后,属性默认为 不可枚举(not enumerable). Object.keys方法仅返回对象中 可枚举(enumerable) 的属性,因此只剩下了"name". 用defineProperty方法添加的属性默认不可变。你可以通过writable, configurableenumerable属性来改变这一行为。这样的话, 相比于自己添加的属性,defineProperty方法添加的属性有了更多的控制权。