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

语法

¥Syntax

js
Reflect.preventExtensions(target)

参数

¥Parameters

target

要阻止扩展的目标对象。

返回值

¥Return value

Boolean 指示目标是否已成功设置以防止扩展。

¥A Boolean indicating whether or not the target was successfully set to prevent extensions.

例外情况

¥Exceptions

TypeError

如果 target 不是对象,则抛出该异常。

描述

¥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.

示例

¥Examples

使用 Reflect.preventExtensions()

¥Using Reflect.preventExtensions()

另见 Object.preventExtensions()

¥See also 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() 的区别

¥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.

js
Reflect.preventExtensions(1);
// TypeError: 1 is not an object

Object.preventExtensions(1);
// 1

规范

Specification
ECMAScript Language Specification
# sec-reflect.preventextensions

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看