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)
是 false
,Object.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