JavaScript this關鍵字指向常用情況解析
在之前寫代碼的經歷中,常常試過寫著寫著this就莫名其妙的不知道指向到哪里去了。今天看了曾探的javascript設計模式,里面特別談到了this在不同情況下指代的對象,非常有意思。
this指代的情況
this有以下4種情況:
1、對象.函數(shù)的形式調用:object.function();
2、普通函數(shù)的形式調用:function();
3、構造器調用;
4、Function.prototype.call或Function.prototype.apply調用;
1、對象.函數(shù)的形式調用
對象.函數(shù)方式調用時,指代該對象。
var obj = {
num:1,
getNum:function(){
alert(this.num);//輸出1
}
}
obj.getNum();
2、普通函數(shù)形式調用
普通函數(shù)的方式被調用時,this指向全局對象。
window.num = 2;
var obj = {
num:1,
getNum:function(){
alert(this.num);
}
}
obj.getNum();//彈出1
var fun1 = obj.getNum;
fun1(); //彈出2
太神奇了,直接調用函數(shù) fun(); 與通過對象調用函數(shù) xxx.fun(); this指代的對象不同。
3、構造器調用
為了能夠用上new關鍵字,javascript的創(chuàng)建對象可以這樣定義。
var person = function(){
this.name = '劉備';
}
在這種情況下,this指代這個正在創(chuàng)建中的對象。
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)); //劉備
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
fastclick插件導致日期(input[type="date"])控件無法被觸發(fā)該如何解決
這篇文章主要介紹了fastclick插件導致日期(input[type="date"])控件無法被觸發(fā)該如何解決,需要的朋友可以參考下2015-11-11
簡單介紹JavaScript數(shù)據(jù)類型之隱式類型轉換
這篇文章主要介紹了簡單介紹JavaScript數(shù)據(jù)類型之隱式類型轉換的相關資料,需要的朋友可以參考下2015-12-12

