2014-06-10 102 views
0

標題的措辭可能需要重新訪問,但現在考慮下面的代碼:我怎樣才能從一個孩子的父母?

var ParentControl = function() 
{ 
    this.ShowAlert = function() 
    { 
     alert('hi!'); 
    } 

    this.childControl = new ChildControl(); 
}; 

var ChildControl = function() 
{ 
    // IN THIS SCOPE HERE I NEED TO CALL 'ShowAlert' 
}; 

var parentControl = new ParentControl(); 

按在上面的代碼段的評論,我需要的ChildControl實例調用「ShowAlert」功能他們的父母,但我不知道如何。

我已經試過

簡單地調用ParentControl.ShowAlert()在那裏我已經寫了評論 - 顯然不能作爲parentControl工作是實例(我不想提及這個明確)。

我也試過將父控件傳遞給ChildControl的構造函數,但我最好想讓子控件獨立於任何特定類型的父類。

+1

*「我希望保持孩子的控制與任何特定類型的父母無關」*在這種情況下,如何處理某種事件發佈者/訂閱模式? 'ChildControl'實例發出一個事件/消息,'ParentControl'實例對它作出反應。 –

+0

@FelixKling - 這聽起來很理想。我知道我可以將這個事件暴露在孩子身上的this.somethingHappened上,但父母怎麼知道發生了什麼?或者我的方法錯了? –

+0

我不是很擅長閱讀,並且仍然不明白剛剛在父類中傳遞'new ChildControl(this);'的問題是什麼? – adeneo

回答

1

我也會將showAlert移動到原型上,所以每次實例化ParentControl時都不會在內存中創建新的函數。

var ParentControl = function() { 
    this.childControl = new ChildControl(this); 
}; 

ParentControl.prototype.showAlert = function() { 
    console.log('hello'); 
}; 

var ChildControl = function(parent) { 
    parent.showAlert(); 
}; 

var parentControl = new ParentControl(); 
+0

所以,OP在說*「我也嘗試將父控件傳遞給ChildControl的構造函數,但是,我最好想讓子控件獨立於任何特定類型的父類。」*,並且您的答案是* 「把父母傳給孩子」*?似乎你專注於技術性(原型)而不是實際問題。 –

相關問題