钩子函数
在运行函数前初始化一些数据,在改变对象值后做一些善后处理。这些都算钩子函数,Proxy的存在就可以让我们给函数加上这样的钩子函数,你也可以理解为在执行方法前预处理一些代码。你可以简单的理解为他是函数或者对象的生命周期。
定义对象的方法
var obj = { add:function(val){ return val + 10; }, name:"i am jie" } console.log(obj.add(100)); console.log(obj.name)
声明Proxy
new Proxy({},{});
var pro = new Proxy({ add: function (val) { return val + 10; }, name: "i am jie" },{ get:function(target,key,property){ console.log('come in get'); return target[key] } }) console.log(pro.name)
get属性
- target:得到的目标值
- key:目标的key值,相当于对象的属性
- property:这个不太常用,
set属性
- target:目标值。
- key:目标的Key值。
- value:要改变的值。
- receiver:改变前的原始值。
var pro = new Proxy({ add: function (val) { return val + 10; }, name: "i am jie" }, { get: function (target, key, property) { console.log('come in get'); return target[key] }, set:function(target,key,value,receiver){ console.log(`setting${key} = ${value}`); return target[key] = value; } }) console.log(pro.name); pro.name = "杰"; console.log(pro.name)