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