JavaScript Handler isExtensible() 方法



JavaScript 中的handler.isExtensible() 方法是 Proxy 物件的一部分。它用於確定是否可以在目標物件上新增新屬性。如果目標物件是可擴充套件的,則該方法返回 true;否則返回 false。這在您希望確保物件不會被進一步更改或保持開放以進行更多新增的情況下非常有用。例如,您可以在嘗試向物件新增新屬性之前使用此方法來檢查物件是否可擴充套件。

語法

以下是 JavaScript handler.isExtensible() 方法的語法:

new Proxy(target, {
   isExtensible(target) {}
});

引數

  • target − 它持有目標物件。

返回值

此方法返回一個布林值。

示例 1

讓我們來看下面的例子,我們將檢查一個物件的擴充套件性。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const obj = {
   car: "POLO GT",
   model: 2023
};
document.write(Reflect.isExtensible(obj) + " < br > "); 
Object.preventExtensions(obj); document.write(Reflect.isExtensible(obj));
</script>
</body>
</html>

輸出

如果我們執行上面的程式,它將在網頁上顯示一段文字。

示例 2

考慮另一個場景,我們將透過新增一個新屬性來擴充套件一個物件。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const x = {
   car: "POLO GT",
   model: 2024
};
document.write(Reflect.isExtensible(x) + " < br > "); 
x.manufacture = "INDIA"; document.write(x.manufacture + " < br > "); 
document.write(Reflect.isExtensible(x));
</script>
</body>
</html>

輸出

執行上述指令碼後,它將在網頁上顯示文字。

示例 3

在下面的例子中,我們將使用 object.freeze() 建立一個不可擴充套件的物件。

<html>
<style>
body {
   font-family: verdana;
   color: #DE3163;
}
</style>
<body>
<script>
const x = {
   fruit: 'Apple',
   season: 'winter'
};
document.write(Reflect.isExtensible(x) + " < br > "); // true
Object.freeze(x); document.write(Reflect.isExtensible(x));
</script>
</body>
</html>

當我們執行上面的程式碼時,它將生成一個包含在網頁上顯示的文字的輸出。

廣告