• JS中this的指向问题


      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;

     

  • 相关阅读:
    HDU 2594 扩展kmp模板题
    HDU 1358 简单kmp
    HDU 3336 扩展kmp
    SPOJ SUBLEX 求第k小子串
    Codeforces 235C
    HDU 4622 Reincarnation
    HDU 4622 求解区间字符串中的不同子串的个数
    [LeetCode] Length of Last Word 字符串查找
    [LeetCode] Sudoku Solver 解数独,递归,回溯
    [LeetCode] Longest Common Prefix 字符串公有前序
  • 原文地址:https://www.cnblogs.com/hehewuyuana/p/5927439.html
Copyright © 2020-2023  润新知