Reflect.preventExtensions()
Reflect.preventExtensions() 静态方法与 Object.preventExtensions() 类似。它阻止将新属性添加到对象中(即阻止将来对该对象进行扩展)。
¥The Reflect.preventExtensions() static method is like Object.preventExtensions(). It prevents new properties from ever being added to an object (i.e., prevents future extensions to the object).
Try it
语法
参数
返回值
例外情况
描述
¥Description
Reflect.preventExtensions() 提供了防止对象扩展的反射语义。与 Object.preventExtensions() 的区别是:
¥Reflect.preventExtensions() provides the reflective semantic of preventing extensions of an object. The differences with Object.preventExtensions() are:
- 如果目标不是对象,则
Reflect.preventExtensions()会抛出TypeError,而Object.preventExtensions()始终按原样返回非对象目标。 Reflect.preventExtensions()返回Boolean指示目标是否已成功设置以防止扩展,而Object.preventExtensions()返回目标对象。
Reflect.preventExtensions() 调用 target 的 [[PreventExtensions]] 对象内部方法。
¥Reflect.preventExtensions() invokes the [[PreventExtensions]] object internal method of target.
示例
使用 Reflect.preventExtensions()
¥Using Reflect.preventExtensions()
另见 Object.preventExtensions()。
¥See also Object.preventExtensions().
// 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() 的区别
¥Difference with Object.preventExtensions()
如果此方法的 target 参数不是对象(基元),那么它将导致 TypeError。对于 Object.preventExtensions(),非对象 target 将按原样返回,没有任何错误。
¥If the target argument to this method is not an object (a primitive), then it will cause a TypeError. With Object.preventExtensions(), a non-object target will be returned as-is without any errors.
Reflect.preventExtensions(1);
// TypeError: 1 is not an object
Object.preventExtensions(1);
// 1
规范
| Specification |
|---|
| ECMAScript Language Specification # sec-reflect.preventextensions |
浏览器兼容性
BCD tables only load in the browser