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

JS中this的指向问题

时间:2016-10-02 14:54:36      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:

  JS中this的定义:this对象是在运行时基于函数的执行环境绑定的(通俗点来说就是:this代表当前函数属于哪个对象)。

 

 this一般情况下都代表的是global对象,在浏览器中就是window对象,在一些情况t下his的指向会发生改变,如下5种:

 1.对象的字面量表示法中:    var a=1

                 var obj={ 

                     a:0;

                     sum:function(  ){

                        alert( this.a) ;      //this.a=0,   这里的this代表obj对象;

                        return function(){

                          this.a;  //这里的this.a=1,?为什么呢,因为每个函数都有两个特殊的变量,一个是arguments,还有一个就是this了,这样函数在访问this时就只会在自己的函数环境中进行查找,而不会向上进行搜索。      

                        }

                     } 

                 }

 

 2.添加事件:        var a=1;

               oDiv1.onclick=function(){

                 alert(this.a);      //  this.a=undefined,  这里的this代表oDiv1,oDiv1没有a属性; 

               }

 

 3.使用定时器:        var a=1;

                oDiv1.onclick=function(){

                  setInterval(function(){

                     alert(this.a) ;    //this.a=1,   这里的this代表window对象,只要使用了定时器,那么里面的this就代表window对象;

                  },1000);

               }

 

 4.使用了ajax:      ajax里面的this代表window对象 ,和使用定时器很像;

 

 5.对象的实例化 :  假如我们自己创建了一个构造函数sum,里面有this.a=1;如果我们直接调用这个构造函数sum(),那么这个this代表window对象;

          但是我们对它进行实例化var obj = new sum(),这样this.a上的this代表当前对象obj;

 

JS中this的指向问题

标签:

原文地址:http://www.cnblogs.com/hehewuyuana/p/5927439.html

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