JavaScript中的this的指向
阿新 • • 發佈:2017-06-09
全局 code app 屬性。 () color asc return apply()
this是JS的關鍵字,隨著函數使用場合的不同,this值會發生變化。但總的原則是,this總是指向調用this所在函數的那個對象。
1、純函數調用
function test(){ this.x=1; alert(x); } test();
這裏的this就是全局變量。看下面的例子就能很好的理解this就是全局對象Global。
var x=1; function test(){ alert(this.x); } test(); //1 var x=1; function test(){ this.x=0; } test(); alert(x); //0
在JavaScript的變量作用域中規定,“全局變量都是window對象的屬性。”因此執行test()時相當於window.test(),此時test函數體內的this關鍵字的指向變成了window對象。即將window對象的x變為0。
var x=1; var b={ x:2, getX:function(){ return this.x; } }; alert(this.x); //1 alert(b.getX()); //2
在上面的代碼中,alert(this.x)中this指向window,所以在全局中搜尋x的值,為1;
alert(b.getX())中由於x所在函數作為對象b的方法被調用,this指向了b,因此在b中搜尋x的值,為2。
2、作為方法調用,那麽this指調用方法的這個對象。
function test(){ alert(this.x); } var o={}; o.x=1; o.m=test; o.m(); //1
3、作為構造函數調用。此時this指向新生成的對象。
function Test(){ this.x=1; } var o= new Test(); alert(o.x); //1
4、apply調用。this指向的是apply中的第一個參數。
var x=0; function test(){ alert(this.x); } var 0={}; o.x=1; o.m=test(); o.m.apply(); //0 o.m.apply(o);//1
當apply沒有參數時,表示為全局對象。所以值為0。
JavaScript中的this的指向