2014-01-10 90 views
0

蔭的獲得上述錯誤代碼(9號線):遺漏的類型錯誤:無法讀取屬性 'X' 未定義

pair = function(x,y){ 
    this.x = x; 
    this.y = y; 
} 

alpha = function(){ 
    this.field = new pair(0,0); 
    this.fun = function(){ 
     console.log(this.field.x); 
    } 
} 

function beta(para){ 
    para(); 
} 

beta(new alpha().fun); 

但呼叫,如:

new alpha().fun(); 

工作正常。

有人可以解釋在這種情況下發生了什麼?

回答

4

這是因爲函數沒有用正確的上下文調用(this)。

您可以使用bind,以確保它是正確的:

this.fun = (function(){ 
    console.log(this.field.x); 
}).bind(this); 

你也可以使用封存儲的this值:

alpha = function(){ 
    var a = this; 
    this.field = new pair(0,0); 
    this.fun = function(){ 
     console.log(a.field.x); 
    } 
} 
相關問題