JavaScript 如何获取对象的属性描述符

JavaScript 如何获取对象的属性描述符

在这里,我们将讨论JavaScript中对象的属性描述符。Object.getOwnPropertyDescriptor()方法返回一个描述给定对象上特定属性的对象。JavaScript对象可以以多种方式创建,并且可以使用该对象的属性描述符来调用其属性。

语法:

Object.getOwnPropertyDescriptor( obj, prop )

Object.getOwnPropertyDescriptor() 方法有两个输入参数,如下所述:

  • obj :它是要描述其属性的对象名称。
  • prop :它定义了要返回值的对象中的特定属性。

返回值: 如果对象存在该属性,则该方法返回该属性,否则返回undefined。

示例: 在下面的示例中,创建了一个名为Obj的对象,其中包含两个属性property1和property2。我们使用Object.getOwnPropertyDescriptor() 方法返回与每个属性相关的属性和值。

JavaScript

<script> 
  
    // Object 
    const Obj = { 
        property1: "GeeksforGeeks", 
        property2: 12 
    }; 
  
    const descriptor1 = Object 
        .getOwnPropertyDescriptor(Obj, 'property1'); 
  
    const descriptor2 = Object 
        .getOwnPropertyDescriptor(Obj, 'property2'); 
  
    console.log(descriptor1.configurable); 
    // expected output: true 
  
    console.log(descriptor1.enumerable); 
    // expected output: true 
  
    console.log(descriptor1.value); 
    // expected output: GeeksforGeeks 
  
    console.log(descriptor2.value); 
    // expected output: 12 
  
</script> 

输出:

true
true
GeeksforGeeks
12

描述符:

一个对象的属性描述符由以下一些属性组成,用于定义每个属性:

  • value: 它是与被调用属性相关联的值
  • writable: 它指示属性是否可以被改变。只有当属性可以被修改时才返回true
  • enumerable: 如果在对应对象的属性枚举期间,该属性可见,则返回true
  • configurable: 它指示属性描述符是否可以被更改或从对应对象中删除

示例: 下面的示例描述了与对象Obj相关的property1和property2的属性。

JavaScript

<script> 
    const Obj = { 
        property1: "GeeksforGeeks", 
        property2: 12 
    }; 
  
    const descriptor1 = Object 
        .getOwnPropertyDescriptor(Obj, 'property1'); 
  
    const descriptor2 = Object 
        .getOwnPropertyDescriptor(Obj, 'property2'); 
  
    console.log(descriptor1); 
    console.log(descriptor2); 
</script> 

输出:

{value: 'GeeksforGeeks', writable: true, enumerable: true, configurable: true}
    configurable: true
    enumerable: true
    value: "GeeksforGeeks"
    writable: true
    [[Prototype]]: Object

{value: 12, writable: true, enumerable: true, configurable: true}
    configurable: true
    enumerable: true
    value: 12
    writable: true
[[Prototype]]: Object

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程