2013-05-21 114 views
3

我想存儲一個對象函數的函數指針在數組中。但它給我的問題,當我想訪問該函數內的對象的另一個屬性。可以任何人解決這個問題,或給我一個想法如何解決它?如何在數組中存儲對象的函數指針?

function O(){ 
     this.name="hello"; 
     this.f=function(){ 
     alert(this.name);//why does "this" refer to the array arr rather than the object? 
     }; 
     this.arr=[]; 
     this.arr["x"]=this.f; 



    } 
    var d=new O(); 
    d.arr["x"](); 
+0

請查看我對「this」工作原理的解釋:http://stackoverflow.com/questions/13441307/how-does-the-this-keyword-in-javascript-act-在對象文字/ 13441628#13441628 – slebetman

回答

4

在這種情況下,將this引用函數被稱爲(在你的情況下,數組)的方法的對象。你要保存的範圍內某處的O函數的引用,如:

function O(){ 
     var self = this; 
     this.name="hello"; 
     this.f=function(){ 
     alert(self.name);//why does "this" refer to the array arr rather than the object? 
     }; 
     this.arr=[]; 
     this.arr["x"]=this.f; 



    } 
    var d=new O(); 
    d.arr["x"](); 

這是JavaScript的一個很常見的模式,並具有允許函數來執行同樣的方式的好處,無論它是通過d.f()還是d.arr["X"]()

+0

謝謝我以爲我試過這樣做,但出了點問題 –

+0

+1而不是「附加到」,你可能會說「被稱爲一種方法」。 – RobG

+0

@RobG - 是的好電話,我把它放在引號中,因爲我想不出一個好的方式來描述它。 –

相關問題