網(wǎng)上有很多介紹this,下面2個(gè)例子是引用阮一峰的
function test(){
this.x = 1;
alert(this.x);
}
test(); // 1
這是函數(shù)的最通常用法,屬于全局性調(diào)用,因此this就代表全局對(duì)象Global。
function test(){
alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m(); // 1
函數(shù)還可以作為某個(gè)對(duì)象的方法調(diào)用,這時(shí)this就指這個(gè)上級(jí)對(duì)象。
自己想法
var foo = function(){console.log(this)}
var obj = {
method : function(){foo()},
method2: function(){console.log(this)},
method3: function(){function func(){foo();}func()},
method4: function(){var _self = this;function func(){_self.method2()} func()}
}
分別輸出1. window 2.obj 3window 4.obj
1和2的區(qū)別是什么?1是在對(duì)象的method方法的環(huán)境下中的一個(gè)func中執(zhí)行代碼,而2是在method方法的直接環(huán)境下執(zhí)行代碼,
所以我的觀點(diǎn)是,在對(duì)象方法的直接環(huán)境下執(zhí)行代碼會(huì)指向obj本身,在其他則指向window
var obj = {
method2: function(){
console.log(this)//----obj
function foo(){console.log(this)}//
foo() //----window
this.method3() // ----obj
},
method3:function(){console.log(this)}//代碼是在對(duì)象的method3方法的直接環(huán)境下執(zhí)行,所以也是指向obj
}
對(duì)象方法中只會(huì)影響直接環(huán)境下的this指向
所以在this混亂的情況下 寫(xiě)好 var _self = this 至關(guān)重要
舉例: jq中回調(diào)函數(shù)的this......
以上僅個(gè)人見(jiàn)解,,有誤,,請(qǐng)?zhí)岢?。。?!?/p>