溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript this關(guān)鍵字

發(fā)布時(shí)間:2020-11-05 16:29:32 來(lái)源:億速云 閱讀:131 作者:Leah 欄目:開發(fā)技術(shù)

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í)。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI