📅  最后修改于: 2023-12-03 14:42:41.392000             🧑  作者: Mango
在JavaScript对象中,有时候我们需要获取一个属性的详细信息,比如属性是否可枚举、是否可写、是否可配置等。这时候就可以使用getOwnPropertyDescriptor()
方法来获取属性描述符。
Object.getOwnPropertyDescriptor(obj, prop)
obj
:要获取属性描述符的对象。prop
:要获取描述符的属性名。若该属性存在,则返回一个对象,包含属性的描述符,否则返回undefined
。
返回的对象有四个属性:
value
:属性的值。writable
:是否可写。enumerable
:是否可枚举。configurable
:是否可配置。let obj = {
name: 'Alice',
age: 18
};
let descriptor = Object.getOwnPropertyDescriptor(obj, 'name');
console.log(descriptor);
// Output:
// {
// value: 'Alice',
// writable: true,
// enumerable: true,
// configurable: true
// }
在上面的示例中,我们通过getOwnPropertyDescriptor()
方法获取了对象obj
中属性名为name
的属性描述符。由于该属性的默认特性都为true
,因此输出的对象中对应属性的值都为true
。
我们还可以通过Object.defineProperty()
方法修改属性描述符。下面是一个示例:
let obj = {
name: 'Alice',
age: 18
};
Object.defineProperty(obj, 'name', {
enumerable: false
});
let descriptor = Object.getOwnPropertyDescriptor(obj, 'name');
console.log(descriptor);
// Output:
// { value: 'Alice', writable: true, enumerable: false, configurable: true }
在上面的示例中,我们将obj
对象中属性名为name
的属性的enumerable
特性改为了false
。再次调用getOwnPropertyDescriptor()
方法获取该属性描述符时,输出的对象中enumerable
的值已经变成了false
。