Reflect.isExtensible()

Baseline 已廣泛支援

此特性已非常成熟,可在多種裝置和瀏覽器版本上使用。自 ⁨2016 年 9 月⁩以來,它已在各大瀏覽器中可用。

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

瀏覽器相容性

另見