面试题答案
一键面试- 使用
Object.defineProperty
将name
属性修改为不可枚举的代码如下:
let obj = {name: 'John'};
Object.defineProperty(obj, 'name', {
enumerable: false
});
Object.defineProperty
各参数含义:- 第一个参数:要在其上定义属性的对象,在上述例子中为
obj
。 - 第二个参数:要定义或修改的属性的名称,在上述例子中为
name
。 - 第三个参数:一个描述符对象,用来指定该属性的配置。其中
enumerable
属性表示该属性是否可枚举,设为false
表示不可枚举,即使用for...in
循环或Object.keys()
等方法不会包含该属性。其他常见的描述符属性还有configurable
(是否可配置,比如能否删除该属性等),writable
(是否可写,即能否修改属性值)等。
- 第一个参数:要在其上定义属性的对象,在上述例子中为