介绍
isExtensible方法拦截Onject.isExtensible操作
demo1
{
var p = new Proxy({},{
isExtensible:function(target){
console.log("called");
return true;
}
});
console.log(Object.isExtensible(p));
//called true
}
//上面代码设置了isExtensible方法,在调用Object.isExtensible
//时会输出called。
//注意该方法只能返回布尔值,否则返回值会被自动转换为布尔值
//这个方法有一个强限制,它的返回值必须与目标对象的isExtensible属性保持一致,否则就会抛出错w
// Object.isExtensible(proxy) === Object.isExtensible(target)
demo2
{
var p = new Proxy({},{
isExtensible:function(target){
return false;
}
});
Object.isExtensible(p);
//Uncaught TypeError: 'isExtensible' on proxy: trap result does not reflect extensibility of proxy target (which is 'true')
// at Function.isExtensible (<anonymous>)
}