JavaScript - Reflect.preventExtensions() 方法



Reflect.preventExtensions() 方法用於阻止向物件新增新的屬性。它的工作原理類似於 Object.preventExtensions() 方法,但它是 Reflect 物件的一部分,Reflect 物件提供了一種更一致、更標準的方式來對物件執行操作。

如果要確保物件在建立後無法更改,可以使用 Reflect.preventExtensions() 方法。這在需要確保物件某些屬性保持不變或需要保護物件免受外部程式碼修改的情況下非常有用。

語法

以下是 JavaScript Reflect.preventExtensions() 方法的語法:

Reflect.preventExtensions(target)

引數

此方法只接受一個引數。以下是引數的描述:

  • target - 要阻止擴充套件的物件。

返回值

此方法返回一個布林值,指示目標物件是否成功設定為不可擴充套件。

示例

示例 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>

執行上述指令碼後,它將在網頁上生成包含空物件的輸出。

廣告

© . All rights reserved.