deleteProperty(target, propKey): 用于拦截delete操作。返回一个布尔值。
该方法主要是拦截delete操作,并在deleteProperty执行真正想做的操作,同时对proxy的属性执行delete操作,若deleteProperty中不设置delete target[ket],则不会真正将该属性删除。 无法删除目标对象自身的不可配置(configurable)的属性,否则报错。
Object.defineProperty():拦截Object.defineProperty(proxy, propKey, propDesc)。 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。详细可参考:Object.defineProperty() - JavaScript | MDN
当Object.defineProperty(obj)时
//deleteProperty(target, propKey)
/*用于拦截delete操作。返回一个布尔值;
该方法主要是拦截delete操作,并在deleteProperty执行真正想做的操作,同时对proxy的属性执行delete操作,若deleteProperty中不设置delete target[ket],则不会真正将该属性删除;
不可以删除目标对象自身的不可配置(configurable)的属性,否则报错。*/
//当Object.defineProperty(obj)时
{
let obj = {
a:1,
b:2
}
Object.defineProperty(obj,'c',{
configurable:true,//这里设置了允许删除该属性
valu