JavaScript - Reflect.preventExtensions() 方法



Reflect.preventExtensions() 方法用于防止将新属性添加到对象中。它的工作方式类似于 Object.preventExtensions() 方法,但它是 Reflect 对象的一部分,它提供了一种更加一致和标准化的方式来对对象执行操作。

如果要确保对象在创建后无法更改,可以使用 Reflect.preventExtensions() 方法。在您希望确保对象的某些属性保持不变的情况下,或者当您希望保护对象不被外部代码修改时,这可能很有用。

语法

以下是 JavaScript Reflect.preventExtensions() 方法的语法 -


 Reflect.preventExtensions(target)

参数

此方法只接受一个参数。相同的描述如下 -

  • target - 要阻止扩展的对象。

返回值

此方法返回 Boolean 值,该值指示目标对象是否已成功变为不可扩展。

示例 1

让我们看看下面的例子,其中对象最初是可扩展的,稍后我们使用 Reflect.preventExtensions() 并观察输出。


<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         let x = {
            a: 11
         };
         document.write(Reflect.isExtensible(x) + " < br > ");
         Reflect.preventExtensions(x); document.write(Reflect.isExtensible(x));
      </script>
   </body>
</html>

如果我们执行上述程序,它将在网页上显示文本。

示例 2

考虑另一个场景,我们将在阻止扩展后添加新属性。


<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         let x = {
            a: 11
         };
         Reflect.preventExtensions(x);
         x.b = 234;
         document.write(JSON.stringify(x));
      </script>
   </body>
</html>

在执行上述脚本时,它将在网页上显示文本。

示例 3

在以下示例中,我们将修改现有属性。


<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         let x = {
            a: 11
         };
         Reflect.preventExtensions(x);
         x.a = 50;
         document.write(JSON.stringify(x));
      </script>
   </body>
</html>

当我们执行上述脚本时,会弹出输出窗口,在网页上显示文本。

示例 4

以下是我们将要删除现有属性的示例。


<html>
   <style>
      body {
         font-family: verdana;
         color: #DE3163;
      }
   </style>
   <body>
      <script>
         let x = {
            a: 1234
         };
         Reflect.preventExtensions(x);
         delete x.a;
         document.write(JSON.stringify(x));
      </script>
   </body>
</html>

在运行上述脚本时,它将生成一个包含网页上空对象的输出。