首页 > 代码库 > JS中this的指向问题
JS中this的指向问题
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;
JS中this的指向问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。