2017.3.13笔记 this指向

this指向是js中的要点,要掌握好。一句话,函数执行时,this指向调用者,若没有调用者,具有全局性,指向window

this一般分为如下情况:

   1 obj.fn() 调用时 指向obj 例如
            var obj = {

           name:"Mike",

           sayName : function(){

              alert(this.name)

           }
                }

      obj.sayName();  this指向调用者obj

      像document.getElementById("tel"),该方法的实现中利用了this(指向document),该方法是在document上找id等于tel的元素。

      如果采取 var getId = document.getElementById;

              getId("tel")  

      此时的this会指向window,不是指向document,然鹅在window上是不能用改取id的方式的(window是要把tel当做变量的window.tel)。

  2   构造函数的this

    如下 function Animal(name){

        this.name = name;

      }    //this 是 new Animal构造函数的时候,指向构造出来的实例。

      Animal.prototype.bite = function(){

        alert(this.name);

      }  

       var cat = new Animal("cat")

      cat.bite(); 指向调用者cat

  3

     var demo = document.getElementById("demo");

   demo.onclick = function(){
      alert(this.id);

   } 

   实际情况是点击demo的时候,触发了demo的click事件执行即(demo.click()) ,很显然,this指向demo 

  可以发现,1 ,2, 3  实际是一类情况

  4

   var demo = document.getElementById("demo");

   demo.onclick = function(){
      alert(this.id); // this 指向demo

      var fn = function(){

        alert(this.id); // 指向window

      }

      fn();

   } 

  此示例中普通函数fn(没有调用者的函数)具有全局性,执行时this指向window

  

posted @ 2017-03-14 10:05  a fine day  阅读(71)  评论(0编辑  收藏  举报