JavaScript 对象的 Object.getOwnPropertyDescriptor() 方法详解
Object.getOwnPropertyDescriptor()
方法返回对象的特定属性的属性描述符。
示例
let obj = { num: 10 };
// 获取obj的num属性的属性描述
let numValue = Object.getOwnPropertyDescriptor(obj, "num");
console.log(numValue);
// 输出: { value: 10, writable: true, enumerable: true, configurable: true }
getOwnPropertyDescriptor()语法
getOwnPropertyDescriptor()
方法的语法是:
Object.getOwnPropertyDescriptor(obj, prop);
这里,getOwnPropertyDescriptor()
是一个静态方法。因此,我们需要使用类名Object
来访问这个方法。
getOwnPropertyDescriptor()参数
getOwnPropertyDescriptor()
方法接受:
- obj - 要查找属性的对象。
- prop - 要检索其描述的属性的名称或
Symbol
。
getOwnPropertyDescriptor()返回值
getOwnPropertyDescriptor()
方法返回:
- 对象指定属性的属性描述符。
- 如果对象中不存在该属性,则返回
undefined
。
示例1:JavaScript对象Object.getOwnPropertyDescriptor()
let obj = {
x: 711,
get number() {
return this.x;
},
};
// 获取obj中x的属性描述
let xDescriptors = Object.getOwnPropertyDescriptor(obj, "x");
console.log(xDescriptors);
// 获取number()方法的属性描述
let value = Object.getOwnPropertyDescriptor(obj, "number");
console.log(value);
输出
{ value: 711, writable: true, enumerable: true, configurable: true }
{
get: [Function: get number],
set: undefined,
enumerable: true,
configurable: true
}
在这个程序中,我们创建了一个包含以下属性的对象obj:
- x - 值为711的属性
number()
- 返回x值的get
方法
然后,我们使用getOwnPropertyDescriptor()
方法查找x和number()
的属性描述符:
// 查找x的属性描述
let xDescriptors = Object.getOwnPropertyDescriptor(obj, "x");
// 查找number()方法的属性描述
let value = Object.getOwnPropertyDescriptor(obj, "number");
注意传递给getOwnPropertyDescriptor()
方法的参数。对象名obj没有使用引号。
然而,属性名x和number
使用双引号括起来,即"x"
和"number"
。
示例2:使用defineProperty()的getOwnPropertyDescriptor()
let obj = {};
// 使用defineProperty()方法定义obj的属性
Object.defineProperty(obj, "id", {
value: 123,
writable: false,
enumerable: false,
});
// 查找创建的属性'id'的属性描述
console.log(Object.getOwnPropertyDescriptor(obj, "id"));
输出
{ value: 123, writable: false, enumerable: false, configurable: false }