📜  JavaScript | Object.getOwnPropertyDescriptor() 方法(1)

📅  最后修改于: 2023-12-03 15:16:08.135000             🧑  作者: Mango

JavaScript | Object.getOwnPropertyDescriptor() 方法

Object.getOwnPropertyDescriptor() 方法返回指定对象上一个自有属性对应的属性描述符。

语法
Object.getOwnPropertyDescriptor(obj, prop)
参数

obj

必需。目标对象。

prop

必需。要返回其描述符的属性名称。

返回值

如果指定的属性存在于对象上,则返回其属性描述符对象(descriptor);否则返回 undefined。

属性描述符是一个包含以下键值的对象:

  • value:属性值。如果 getter 存在,则该值为 undefined。
  • writable:如果属性可以修改返回 true,否则返回 false。
  • enumerable:如果属性可以枚举返回 true,否则返回 false。
  • configurable:如果可以使用 delete 删除属性返回 true,否则返回 false。
示例
const obj = {
  name: 'John',
  age: 28,
  get fullName() {
    return this.name + " " + this.age;
  },
  set fullName(value) {
    const parts = value.split(" ");
    this.name = parts[0];
    this.age = parseInt(parts[1]);
  }
};

console.log(Object.getOwnPropertyDescriptor(obj, 'name'));
// Output: { value: 'John', writable: true, enumerable: true, configurable: true }

console.log(Object.getOwnPropertyDescriptor(obj, 'fullName'));
// Output: { get: [Function: get fullName], set: [Function: set fullName], enumerable: true, configurable: true }

在上面的示例中,我们有一个名为 obj 的对象,包含三个属性:name, age 和 fullName。fullName 属性是一个带有 getter 和 setter 方法的访问器属性。

我们可以使用 Object.getOwnPropertyDescriptor() 方法来获取对象的属性的属性描述符。

第一个例子中,我们获取'name'属性的属性描述符,它是一个数据属性,因此我们得到一个包含值,可写,可枚举和可配置属性的属性描述符对象。

第二个示例中,我们获取'fullName'属性的属性描述符,它是一个访问器属性,因此我们得到一个包含getter和setter属性,以及可枚举和可配置属性的属性描述符对象。

总结

Object.getOwnPropertyDescriptor() 方法允许我们获取指定对象上的属性描述符。使用属性描述符,有助于更好地控制对象上的属性,使其更灵活。