1. 程式人生 > 程式設計 >JavaScript this關鍵字指向常用情況解析

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));  //劉備

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。