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 |
浏览器兼容性
加载中…