this指的就是當前上下文環境對象,主要分兩種情況。 1.函數中的this指的是調用該函數的那個上下文環境對象 這個的理解還是非常重要的。 看一個全局函數的例子 var b = 1; function a(){ alert(this.b); } a();//1 這裡面函數a是屬於全局變數window
this指的就是當前上下文環境對象,主要分兩種情況。
1.函數中的this指的是調用該函數的那個上下文環境對象
這個的理解還是非常重要的。
看一個全局函數的例子
var b = 1; function a(){ alert(this.b); } a();//1
這裡面函數a是屬於全局變數window。所以調用a的時候實際上和window.a()等同。所以a函數中的this指的是調用a函數的調用者window。所以列印出1就不稀奇了。
再看一個對象的例子
var person = { name:'chua', do:function(){alert(this.name)} } person.do();//'chua'
這裡面函數do是屬於對象person。所以調用person.do的時候函數中的this指的是調用do函數的調用者person。所以列印出this.name就是person.name列印'chua'。
最後是call/apply的例子
var b = 0; var c = { a: function(){alert(this.b); }, b: 1 }
var d = { b: 2};
c.a.apply(); //0
c.a.apply(d); //2
apply第一個參數會替換上下文環境,沒有第一個參數的時候預設是全局變數window。
2.構造函數調用
構造函數調用實際上就失竊換了上下文環境到新建的對象中。
function a(){ this.b = 1; } var c = new a(); alert(c.b); //1 alert(typeof b); //"undefined"
new a()後上下文環境對象變成了c。
如果覺得本文不錯,請點擊右下方【推薦】!