📜  JavaScript对象getOwnPropertyDescriptor()(1)

📅  最后修改于: 2023-12-03 14:42:41.392000             🧑  作者: Mango

使用JavaScript对象getOwnPropertyDescriptor()

在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