📅  最后修改于: 2023-12-03 15:16:08.135000             🧑  作者: Mango
Object.getOwnPropertyDescriptor()
方法返回指定对象上一个自有属性对应的属性描述符。
Object.getOwnPropertyDescriptor(obj, prop)
obj
必需。目标对象。
prop
必需。要返回其描述符的属性名称。
如果指定的属性存在于对象上,则返回其属性描述符对象(descriptor);否则返回 undefined。
属性描述符是一个包含以下键值的对象:
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()
方法允许我们获取指定对象上的属性描述符。使用属性描述符,有助于更好地控制对象上的属性,使其更灵活。