Reflect.preventExtensions()
Reflect.preventExtensions() 靜態方法類似於 Object.preventExtensions()。它阻止向物件新增新屬性(即,阻止將來對物件進行擴充套件)。
試一試
const object = {};
console.log(Reflect.isExtensible(object));
// Expected output: true
Reflect.preventExtensions(object);
console.log(Reflect.isExtensible(object));
// Expected output: false
語法
js
Reflect.preventExtensions(target)
引數
目標-
要阻止擴充套件的目標物件。
返回值
一個 Boolean,指示目標是否已成功設定為阻止擴充套件。
異常
TypeError-
如果
target不是一個物件,則丟擲。
描述
Reflect.preventExtensions() 提供了阻止物件擴充套件的反射語義。與 Object.preventExtensions() 的區別在於:
- 如果目標不是物件,
Reflect.preventExtensions()會丟擲TypeError,而Object.preventExtensions()則始終將非物件目標按原樣返回。 Reflect.preventExtensions()返回一個Boolean,指示目標是否已成功設定為阻止擴充套件,而Object.preventExtensions()返回目標物件。
Reflect.preventExtensions() 呼叫 target 的 [[PreventExtensions]] 物件內部方法。
示例
使用 Reflect.preventExtensions()
另請參閱 Object.preventExtensions()。
js
// Objects are extensible by default.
const empty = {};
Reflect.isExtensible(empty); // true
// … but that can be changed.
Reflect.preventExtensions(empty);
Reflect.isExtensible(empty); // false
與 Object.preventExtensions() 的區別
如果此方法的 target 引數不是物件(原始值),則會引發 TypeError。使用 Object.preventExtensions() 時,非物件 target 將按原樣返回,不會報錯。
js
Reflect.preventExtensions(1);
// TypeError: 1 is not an object
Object.preventExtensions(1);
// 1
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-reflect.preventextensions |
瀏覽器相容性
載入中…