标签:
this的指向由调用时决定而不是定义时决定,定义的方式:
//直接定义在函数里 var a="window中的a"; var name="window"; function aa(args1,args2){ console.log(this.a+args1+args2); } aa(); //this=window //定义在对象中 var o={ a:"o中的aaa", name:"nicole", print:function(){ console.log(this.name); } }; o.print(); //nicole,this=o //将对象的方法赋给其他变量,this由该变量决定。 var bb=o.print; bb(); //widnow,this=window //使用call&apply改变this指向 aa.call(o,"+abc","+def"); //在o中执行,aa(args1,agrs2)方法,参数单个接收 aa.apply(o,["+abc","+def"]); //在o中执行,aa(args1,agrs2)方法,参数接收数组形式 aa("+abc","+def"); //获取DOM节点,对该节点添加的事件中,this一般指向该节点对象。
call重写新对象的属性:
function p(){ this.name="abc"; this.age=24; } o={ name:"niole" };
执行完p.call(o);后,name&age被写入o,并且将原来的o.name覆盖:
因为:p.call(o)等价于o.p(),p()执行完毕后,p中的this=o,p()执行后,o.name="abc",o.age=24;
标签:
原文地址:http://www.cnblogs.com/my2dieer/p/5853818.html