码迷,mamicode.com
首页 > Web开发 > 详细

JS中this的指向问题

时间:2016-09-08 18:15:21      阅读:572      评论:0      收藏:0      [点我收藏+]

标签:

  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的指向问题

标签:

原文地址:http://www.cnblogs.com/my2dieer/p/5853818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!