javascript—this探險

一、 this做爲全局變量app

01   var name = "The Window";
02    var object = {
03          name : "My Object",
04          getNameFunc : function(){
05                return function(){
06                      return this.name;
07                };
08          }
09    };
10  console.log(object.getNameFunc()());

二、 做爲對象方法的調用函數

函數還能夠做爲某個對象的方法調用,這時this就指這個上級對象。this

1   function test2(){
2       console.log("x的值",this.x);
3     }
4     var o = {};
5     o.x = 1;
6     o.m = test2;
7     o.m(); // 1

當方法在某個對象的內部時,此時this就指的是此方法的上級對象,由此可知最外層方法的上級對象是window全局對象code

三、 做爲構造函數調用對象

所謂構造函數,就是經過這個函數生成一個新對象(object)。這時,this就指這個新對象。get

1   function test3(){
2           this.x = 1;
3     }
4     var o = new test3();
5     console.log("x的值",o.x);// 1

四、 apply調用io

apply()是函數對象的一個方法,它的做用是改變函數的調用對象,它的第一個參數就表示改變後的調用這個函數的對象。所以,this指的就是這第一個參數。console

1   var x = 0;
2     function test4(){
3       alert(this.x);
4     }
5     var o={};
6     o.x = 1;
7     o.m = test4;
8     o.m.apply(); //0

apply()的參數爲空時,默認調用全局對象。所以,這時的運行結果爲0,證實this指的是全局對象。function

若是把最後一行代碼修改成o.m.apply(o); //1test

運行結果就變成了1,證實了這時this表明的是對象o。

相關文章
相關標籤/搜索