JavaScript getOwnPropertyDescriptor方法

JavaScript getOwnPropertyDescriptor方法教程

JavaScript 中,Object.getOwnPropertyDescriptor() 方法用于 返回 指定 对象 上一个自有 属性 对应的属性描述符。(自有属性指的是直接赋予该对象的属性,不需要从原型链上进行查找的属性)

JavaScript getOwnPropertyDescriptor详解

语法

Object.getOwnPropertyDescriptor(obj, prop);

参数

参数 描述
obj 需要查找的目标对象。
prop 目标对象内属性名称。

数据描述符

数据描述符 说明
configurable 当且仅当该属性的 configurable 为 true 时,该属性描述符才能够被改变,同时该属性也能从对应的对象上被删除。默认为 false。
enumerable 当且仅当该属性的 enumerable 为 true 时,该属性才能够出现在对象的枚举属性中。默认为 false。
value 该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。默认为 undefined
writable 当且仅当该属性的 writable 为 true 时,value 才能被赋值运算符改变。默认为 false。
get 一个给属性提供 getter 的方法,如果没有 getter 则为 undefined。当访问该属性时,该方法会被执行,方法执行时没有参数传入,但是会传入 this 对象(由于继承关系,这里的this并不一定是定义该属性的对象)。
默认为 undefined。
set 一个给属性提供 setter 的方法,如果没有 setter 则为 undefined。当属性值修改时,触发执行该方法。该方法将接受唯一参数,即该属性新的参数值。
默认为 undefined。

返回值

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

案例

Object.getOwnPropertyDescriptor获取对象属性描述符

使用 Object.getOwnPropertyDescriptor 获取对象属性描述符

<!DOCTYPE html> <html> <head> <title>JavaScript Object.getOwnPropertyDescriptor获取属性描述符对象</title> <script type="text/javascript"> console.log("嗨客网(www.haicoder.net)"); function createPerson(name, age, sex){ var person = new Object(); person.name = name; person.age = age; person.sex = sex; person.sayHi = function(){ console.log("I am", this.name, "i am", this.age, "years old", "and my sex is", this.sex); } return person; } var person = createPerson("HaiCoder", 109, "F"); var nameDescriptor = Object.getOwnPropertyDescriptor(person, "name"); console.log("nameDescriptor =", nameDescriptor); var ageDescriptor = Object.getOwnPropertyDescriptor(person, "age"); console.log("ageDescriptor =", ageDescriptor); var sexDescriptor = Object.getOwnPropertyDescriptor(person, "sex"); console.log("sexDescriptor =", sexDescriptor); </script> </head> </html>

程序运行后,控制台输出如下:

10_JavaScript Object getOwnPropertyDescriptor.png

我们首先创建了一个 person 对象,该对象有三个属性,即 name 、age 和 sex,最后,我们使用 getOwnPropertyDescriptor 分别获取了属性 name 、age 和 sex 的属性描述符信息。

我们可以看到,这三个属性的 writeable、enumerable 和 configurable 属性都为 true,即都是默认值。

JavaScript getOwnPropertyDescriptor方法总结

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