2017-02-14 78 views
-3

對象綁定方法中包含對象B.另一個方法

的一個實例,當用戶點擊一個div它會調用一個方法,並通過對對象B的說法,但是我們需要對象B能夠調用一個方法並在對象A上傳遞參數,因爲它必須更新相應的對象。

我們不希望在實例化對象A傳遞到對象B.

的構造從對象A中,我希望能定義:

this.objectB = new ObjectB(); 
    ObjectA.handleUserSelection += this.objectB.handleDateTimeSelection; 

在對象A的方法看起來像:

ObjectA.prototype.handleUserSelection(data) 
    { 
    //do something else with the data 
    } 

所以當objectB.handleDateTimeSelection從當用戶點擊綁定了DIV調用,它也將觸發相應的對象A方法。

說明2)

當調用對象B的方法,我想調用的對象A的方法,但我不希望有傳遞整個對象的引用到對象B.對象A是知道的對象B,但對象B完全不知道對象A.

+0

對不起,我不明白這個問題或者你想達到什麼目的。 – zozo

+0

如果您的目標是在調用ObjectB.handleDateTimeSelection之後在ObjectA上執行某個函數,那麼ObjectB將需要對ObjectA中方法的引用。 this.objectB.handleDateTimeSelection(ObjectA.prototype.handleUserSeleection);然後在this.objectB.handleDateTimeSelection的主體中,你可以用你需要的任何參數調用傳入函數。 – databyss

+0

真的不清楚問題在這裏。 「我希望定義:」不是一個問題,而是一個要求。 – Claies

回答

0

您可以將方法作爲參數傳遞給函數。

// ObjectA method definition 
ObjectA.prototype.someMethod(data) { 
// do something with the data 
} 

// ObjectB method definition 
ObjectB.prototype.handleDateTimeSelection(inputMethod) { 
    // Do object B stuff 

    // execute callback 
    inputMethod(someData); 
} 

// Calling it 
this.objectB.handleDateTimeSelection(ObjectA.prototype.someMethod); 

// or something existing 
this.objectB.handleDateTimeSelection(alert); 
+0

handleDateTimeSelection將被發現到div上的點擊事件,並將接收到單擊的元素。我想把這個元素髮送到Obect A方法,但是對象b是無知的 – Illuminati