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