在JavaScript对象中定义属性时,“可枚举”属性的重要性是什么?

我们可以使用点 括号 符号定义对象的属性 。还有另一种方法,使用称为Object.defineProperty()的属性来定义属性。通常需要3个参数,它们是对象名称,属性名称,属性描述符。

语法

Object.defineProperty(object name, property name, property descriptor)

让我们用此方法定义一个属性。

示例

在下面的示例中,最初,该对象仅具有一个名为“ one ”的属性。稍后,添加了另一个名为“ two ”的属性。现在,当我们尝试显示所有属性时,仅显示第一个属性,而不显示添加的属性,如输出所示。

<html>
<body>
<script>
   var object = {one: 1};
   Object.defineProperty(
      object,
      'two', {
         value: 2
       }
   );
   document.write(JSON.stringify(object));
</script>
</body>
</html>

输出结果

{"one":1}

这都是由于“可枚举”属性。“枚举”属性必须为true才能在对象中定义属性。但是,“ enumerable 在未声明时占一个值“ false” 。因此,为了使作为“值真正”我们必须声明“枚举”,需要分配“真” 给它

在下面的示例中,当初始化“ enumerable ”并将其值分配为true时,所有属性均显示为输出中所示。

示例

<html>
<body>
<script>
   var object = {one: 1};
  Object.defineProperty(
   object,
   'two', {
      value: 2,
      enumerable: true
   }
);
document.write(JSON.stringify(object));
</script>
</body>
</html>

输出结果

{"one":1,"two":2}