JavaScript 完全知识体系

JavaScript 完全知识体系

Proxy - handler.preventExtensions

handler.preventExtensions() 方法用于拦截 Object.preventExtensions 操作,该方法必须返回一个布尔值,否则会被自动转为布尔值。

语法

const proxy = new Proxy(target, {
preventExtensions: function (target) {
// do something
},
});
参数说明类型
target目标对象object

说明

拦截

该方法会拦截目标对象的以下操作:

  • Object.preventExtensions()
  • Reflect.preventExtensions()

约束

如果违背了以下的约束,proxy 会抛出 TypeError:

  • 如果 Object.isExtensible(proxy)falseObject.preventExtensions(proxy) 只能返回 true

示例

以下代码演示了如何拦截 Object.preventExtensions()

const proxy = new Proxy(
{},
{
preventExtensions: function (target) {
console.log('Called');
Object.preventExtensions(target);
return true;
},
}
);
console.log(Object.preventExtensions(proxy));
// "Called"
// false