Posted on 2008-02-11 10:20
oxl 閱讀(1189)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
技術(shù)感語(yǔ)
全局范圍內(nèi)申明的變量其實(shí)就是window對(duì)象的屬性,比如說(shuō):
1 var test;
我們可以用下面的方式得到它:
1 window.test
2 this.test
因?yàn)樵陧敿?jí)范圍,this指向window對(duì)象,可以這么認(rèn)為,this指向window作用域。
我們定義一個(gè)對(duì)象:
1 var obj1 = {name: "oxl", func: function() {alert(this.name);}};
2 var obj2 = {name: "blogjava", func: function() {alert(this.name);}};
這個(gè)時(shí)候,obj1和obj2都是window的屬性,我們可以通過(guò)obj1.name訪(fǎng)問(wèn)obj1的name屬性(obj2也同樣),通過(guò)obj1.func()訪(fǎng)問(wèn)obj1的func方法。注意,這里使用this訪(fǎng)問(wèn)對(duì)象的name屬性,因?yàn)檫@時(shí)func是obj1的方法,所以this指向的是obj1,所以,this.name其實(shí)就是obj1.name。
我們又可以這樣去調(diào)用obj1的方法:
1 obj1.func.call(obj2);
這時(shí),在obj1.func函數(shù)中,所有的this都是指向obj2,與obj1沒(méi)有任何關(guān)系,所以這時(shí)this.name其實(shí)就是obj2.name。
總結(jié):從上面我們可以這樣認(rèn)為,this總是指向自己的作用域范圍,全局范圍中它指向window,而在對(duì)象中,它指向?qū)ο螅绻付ㄒ粋€(gè)對(duì)象做為它的作用域,它指向這個(gè)對(duì)象。在Ext中就用到這樣的方式,因?yàn)樵趏nReady函數(shù)的第二個(gè)參數(shù)就作用域指定,估計(jì)也是用call方式指定作用域外。