sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
sitelink4 | http://1 |
extra_vars4 | ko |
extra_vars5 | http://www.taeyo.net/Forum/Content.aspx?SEQ=21743&TBL=JSCRIPT&PGN=1 |
extra_vars6 | sitelink1 |
1. 첫번째 질문
위와 같은데요.
NxViewer 에서 NxControl 의 GetText()를 호출하고 싶습니다.
상속은 위와 같이 합니다.
흔히들 두번째, 생성자를 재지정하는 걸 놓지는데 반드시 생성자를 재지정 해야 합니다.
만약 재지정하지 않을 경우 var o = new NxViewer() 와 같이 생성한 객체가 가르키는 constructor가 부모 생성자가 되어버리는 문제가 생깁니다.
이렇게 하였을 경우 부모의 GetText()를 호출 하는 방법은 아래와 같습니다.
프로토타입 체인을 이해하시면 될거 같습니다.
- /*부모클래스*/
- function NxControl(containerElement) {
- this.GetText=function() {
- return "부모입니다.";
- }
- }
- /*----------------------------------------------------------------*/
/*NxControl을 상속받은 자식 클래스*/ - function NxViewer(containerElement) {
- NxControl.apply(this, arguments);
- this.GetText=function() {
- return "자식입니다.";
- }
- }
- NxViewer.prototype = new NxControl();
- /*----------------------------------------------------------------*/
NxViewer 에서 NxControl 의 GetText()를 호출하고 싶습니다.
·미리보기 | 소스복사·
- NxViewer.prototype = new NxControl();
- NxViewer.prototype.constructor = NxViewer;
흔히들 두번째, 생성자를 재지정하는 걸 놓지는데 반드시 생성자를 재지정 해야 합니다.
만약 재지정하지 않을 경우 var o = new NxViewer() 와 같이 생성한 객체가 가르키는 constructor가 부모 생성자가 되어버리는 문제가 생깁니다.
이렇게 하였을 경우 부모의 GetText()를 호출 하는 방법은 아래와 같습니다.
·미리보기 | 소스복사·
- var o = new NxViewer();
- alert(o.constructor.prototype.GetText());
2. 두번째 다시 질문
답변 감사합니다.
아래와 같이 코딩했더니
·미리보기 | 소스복사·
- /*부모클래스*/
- function NxControl(containerElement)
- {
- this.GetText=function()
- {
- alert( "부모입니다.");
- }
- }
- /*----------------------------------------------------------------*/
- /*NxControl을 상속받은 자식 클래스*/
- function NxViewer(containerElement)
- {
- NxControl.apply(this, arguments);
- this.GetText=function()
- {
- alert( this.constructor.prototype.GetText() );
- }
- }
- NxViewer.prototype = new NxControl();
- NxViewer.prototype.constructor = NxViewer;
- var ctl = new NxViewer();
- ctl.GetText();
"부모입니다" 가 찍히긴 하는데요. 연이어 'undefined' 앨럿창도 떠버리네요.
'undefined' 가 안뜨게 할 수 있는 방법이 있을까요? ^^
리턴값이 존재 하지 않아서 뜨는 문제 입니다.
아래 참고 하세용.
... 음아래 참고 하세용.
·미리보기 | 소스복사·
- /*부모클래스*/
- function NxControl(containerElement)
- {
- this.GetText=function()
- {
- //alert( "부모입니다.");
- return "부모값";
- }
- }
- /*----------------------------------------------------------------*/
- /*NxControl을 상속받은 자식 클래스*/
- function NxViewer(containerElement)
- {
- NxControl.apply(this, arguments);
- this.GetText=function()
- {
- alert( this.constructor.prototype.GetText() );
- }
- }
- NxViewer.prototype = new NxControl();
- NxViewer.prototype.constructor = NxViewer;
var ctl = new NxViewer(); - ctl.GetText();