2016-03-20 85 views
0

我有這樣的代碼如何將這個ARG傳遞給javascript函數

var a = { 
    b: function(){ 
     this.c(); 
    }, 
    c: function(){ 
     console.log("here"); 
    } 
} 

var x = { 
    y: function(callback){ 
     callback(); 
    } 
} 

如何我通過這個參數,所以它工作正常,當我打電話xy格式(A·B)?我的意思是我要訪問的「一」對象的所有成員時,我稱之爲AB的將它作爲一個參數的結果XY

回答

3

你必須bind手動背景下,

x.y(a.b.bind(a)); 

如果你這樣做不綁定它,那麼a.b函數內的this將被視爲x

0

您需要將對象的引用傳遞給函數y。這是因爲當你傳遞函數a.b時,你不會告訴javascript傳遞從對象a調用的函數b,而只是傳遞函數的引用。我會做的是使用「呼叫」功能,即允許設置功能的「本」屬性,你想打電話:

var x = { 
y: function(callback,objFrom){ 
    callback.call(objFrom); 
    } 
} 

然後:

x.y(a.b,a); 

清除您請記住「這個」在javascript中的含義,您可以閱讀這篇對我來說真的很有用的文章:http://javascriptissexy.com/understand-javascripts-this-with-clarity-and-master-it/

相關問題