面试题答案
一键面试在JavaScript中,可以使用Object.defineProperty()
方法来设置对象属性的特性,从而使prop
属性不可枚举。以下是代码示例:
let obj = {};
Object.defineProperty(obj, 'prop', {
value: '这是一个值',
enumerable: false,
writable: true,
configurable: true
});
// 测试属性是否可枚举
for (let key in obj) {
console.log(key);
}
在上述代码中,Object.defineProperty()
方法接受三个参数:
- 目标对象:这里是
obj
,表示要为哪个对象定义属性。 - 属性名:
prop
,即要定义或修改的属性名称。 - 属性描述符对象:包含了一些特性,用来描述该属性的行为。
enumerable
:布尔值,当设置为false
时,该属性不会出现在对象的枚举属性中(例如通过for...in
循环或Object.keys()
方法获取的属性列表中)。默认为false
。writable
:布尔值,设置为true
时,属性的值可以被重新赋值。默认为false
。configurable
:布尔值,设置为true
时,可以使用delete
删除该属性,也可以再次修改属性的特性(除writable
特性在第一次设置后不能再次修改外)。默认为false
。
在这个例子中,我们将prop
属性的enumerable
特性设置为false
,所以在for...in
循环中不会枚举到prop
属性。