版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
<script>
// // jq的事件代理
// jq的事件代理
function Car(){
this.name="兰博基尼";
this.show=function(){
console.log("好牛逼的车")
}
}
var expensiveCar=new Car();
// console.log(expensiveCar);
// 事件代理的第一个参数为对象 第二个参数为对象的方法 以下两种方法都可以
$.proxy(expensiveCar,"show")();//控制台打印 “好牛逼的车”
$.proxy(expensiveCar.show(),expensiveCar);//控制台打印 “好牛逼的车”
$.proxy(expensiveCar.show,expensiveCar)();//控制台打印 “好牛逼的车”
// 事件代理的第一个参数为对象 第二个参数为对象的方法 以下两种方法都可以
// $.proxy(expensiveCar,"show");//控制台打印 “好牛逼的车”
// $.proxy(expensiveCar.show,expensiveCar);//控制台打印 “好牛逼的车”
function Car(){
console.log("我是测试代码")
this.name="兰博基尼";
$.proxy(this.show,this)();//控制台打印 “好牛逼的车”
$.proxy(this,"show")();//控制台打印 “好牛逼的车”
$.proxy(expensiveCar.show(),expensiveCar);//控制台打印 “好牛逼的车”
}
Car.prototype.show=function(){
console.log("好牛逼的车");
}
var expensiveCar=new Car();
es6的时间代理
定义两个json对象
var obj={
a:1,
b:2
};
var handler={
//添加set方法
set: function(target,key,value){
target[key]=value;
console.log("我在这里调用了set方法");
},
//添加get方法
get: function(target,key){
console.log("我在这里调用了get方法");
return target[key];
},
//添加has 方法
has:function(target,key){
console.log("我在这里调用了has方法");
return key in target;
}
}
var p=new Proxy(obj,handler);
console.log(p);//此时p为代理的一个实例对象
var m=p.a;//当获取a的属性值时 就会调用get方法
p.a=20;//当设置a的值时,就会调用set方法
"a"in p;//当a在p中进行迭代操作时,就会调用set方法
</script>