Reflect.isExtensible()
Reflect.isExtensible() 靜態方法類似於 Object.isExtensible()。它用於確定一個物件是否是可擴充套件的(即是否可以向其新增新屬性)。
試一試
const object1 = {};
console.log(Reflect.isExtensible(object1));
// Expected output: true
Reflect.preventExtensions(object1);
console.log(Reflect.isExtensible(object1));
// Expected output: false
const object2 = Object.seal({});
console.log(Reflect.isExtensible(object2));
// Expected output: false
語法
js
Reflect.isExtensible(target)
引數
目標-
要檢查是否可擴充套件的目標物件。
返回值
一個 Boolean 值,指示目標物件是否可擴充套件。
異常
TypeError-
如果
target不是一個物件,則丟擲。
描述
Reflect.isExtensible() 提供了檢查物件是否可擴充套件的反射語義。與 Object.isExtensible() 的唯一區別在於如何處理非物件目標。如果目標不是物件,Reflect.isExtensible() 會丟擲 TypeError,而 Object.isExtensible() 對於非物件目標始終返回 false。
Reflect.isExtensible() 呼叫 target 的 [[IsExtensible]] 物件內部方法。
示例
使用 Reflect.isExtensible()
另請參閱 Object.isExtensible()。
js
// New objects are extensible.
const empty = {};
Reflect.isExtensible(empty); // true
// … but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // false
// Sealed objects are by definition non-extensible.
const sealed = Object.seal({});
Reflect.isExtensible(sealed); // false
// Frozen objects are also by definition non-extensible.
const frozen = Object.freeze({});
Reflect.isExtensible(frozen); // false
與 Object.isExtensible() 的區別
如果此方法的 target 引數不是物件(而是原始值),則會引發 TypeError。使用 Object.isExtensible() 時,非物件 target 將返回 false 而不引發任何錯誤。
js
Reflect.isExtensible(1);
// TypeError: 1 is not an object
Object.isExtensible(1);
// false
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-reflect.isextensible |
瀏覽器相容性
載入中…