2014-06-10 2 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(); 

을, 나는 'ShowAlert'함수를 호출하는 ChildControl의 인스턴스를 필요 부모님에 대해서 어떻게 생각하는지 모르겠다. 나는 단순히 내가 코멘트 쓴 한 ParentControl.ShowAlert() 호출

을 시도했다

- 분명히 parentControl대로 작동하지 않습니다 인스턴스 (I가 명시 적으로 참조하지 않음)입니다.

나는 부모 컨트롤을 ChildControl의 생성자에 전달하려고했지만 이상적인 특정 유형의 부모로부터 자식 컨트롤을 독립적으로 유지하려고합니다. 메모리에 당신이 ParentControl를 인스턴스화 할 때마다 새로운 기능을 생성하지 않는, 그래서

+1

* "나는 자녀 제어를 특정 유형의 부모로부터 독립적으로 유지하고 싶습니다."* 그런 경우 어떤 종류의 이벤트 게시자/구독 패턴은 어떻습니까? 'ChildControl' 인스턴스는 이벤트/메시지를 내보내고'ParentControl' 인스턴스는 그것에 반응합니다. –

+0

@FelixKling - 이상적인 것으로 들립니다. 나는이 사건을 아이에게'이 무언가가 있었다 '고 폭로 할 수 있다는 것을 알고 있습니다. 그러나 부모님은 어떻게하면 무언가가 일어 났음을 알 수 있습니까? 아니면 내 접근 방식이 잘못 되었나요? –

+0

나는 독서에 능숙하지 못하며, 부모 안에'new ChildControl (this);을 그냥 넘겨서 문제가 무엇인지 이해하지 못한다. – adeneo

답변

1

또한, 프로토 타입에 showAlert를 이동할 것입니다.

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의 생성자에 전달하려고 시도했지만 아이 컨트롤을 특정 유형의 부모로부터 독립적으로 유지하려고합니다."*, 귀하의 대답은 * "그냥 부모를 아이에게 넘겨"*? 실제 질문 대신 전문성 (프로토 타입)에 중점을 둔 것처럼 보입니다. –

관련 문제