您好,登錄后才能下訂單哦!
JavaScript this關(guān)鍵字?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
在之前寫代碼的經(jīng)歷中,常常試過(guò)寫著寫著this就莫名其妙的不知道指向到哪里去了。今天看了曾探的javascript設(shè)計(jì)模式,里面特別談到了this在不同情況下指代的對(duì)象,非常有意思。
this指代的情況
this有以下4種情況:
1、對(duì)象.函數(shù)的形式調(diào)用:object.function();
2、普通函數(shù)的形式調(diào)用:function();
3、構(gòu)造器調(diào)用;
4、Function.prototype.call或Function.prototype.apply調(diào)用;
1、對(duì)象.函數(shù)的形式調(diào)用
對(duì)象.函數(shù)方式調(diào)用時(shí),指代該對(duì)象。
var obj = { num:1, getNum:function(){ alert(this.num);//輸出1 } } obj.getNum();
2、普通函數(shù)形式調(diào)用
普通函數(shù)的方式被調(diào)用時(shí),this指向全局對(duì)象。
window.num = 2; var obj = { num:1, getNum:function(){ alert(this.num); } } obj.getNum();//彈出1 var fun1 = obj.getNum; fun1(); //彈出2
太神奇了,直接調(diào)用函數(shù) fun(); 與通過(guò)對(duì)象調(diào)用函數(shù) xxx.fun(); this指代的對(duì)象不同。
3、構(gòu)造器調(diào)用
為了能夠用上new關(guān)鍵字,javascript的創(chuàng)建對(duì)象可以這樣定義。
var person = function(){
this.name = '劉備';
}
在這種情況下,this指代這個(gè)正在創(chuàng)建中的對(duì)象。
var p = new person();
alert(p.name);//彈出劉備
4、Function.prototype.call或Function.prototype.apply調(diào)用
var obj1 = { name:'關(guān)羽', getName:function(){ return this.name; } } var obj2 = { name:'劉備' } alert(obj1.getName()); //關(guān)羽 alert(obj1.getName.call(obj2)); //劉備
關(guān)于JavaScript this關(guān)鍵字問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。