Reflect.preventExtensions()

Reflect.preventExtensions() 静态方法类似于 Object.preventExtensions()。它可以防止将来向对象添加新的属性(即,防止对象将来扩展)。

试试看

语法

js
Reflect.preventExtensions(target)

参数

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 语言规范
# sec-reflect.preventextensions

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅