2016-08-18 3 views
0

상위 클래스의 정적 메서드에서 하위 클래스의 정적 메서드를 호출하려면 어떻게해야합니까?JavaScript에서 정적 하위 클래스 메서드 호출 방법

class A { 

    static foo(){ 
    // call subclass static method bar() 
    } 
} 

class B extends A { 

    static bar(){ 
    // do something 
    } 
} 

B.foo() 

업데이트 :

나는 이것이의 서브 클래스 내 상황에서 싱글로 최고 일 것이다 나는 A.에 template method pattern을 사용하고 싶어한다는 것입니다 노력하는 이유를

정적 컨텍스트에서 하위 클래스에 대한 참조를 가져올 수없는 것처럼 보였으므로 지금은 마찬가지로 잘 작동하는 A 하위 클래스의 인스턴스를 내보내고 있습니다. 감사.

업데이트 2

예, 그것은 정도 (다른 문제는 하위 클래스를 포함하지 않음)에 중복입니다. 정적 컨텍스트에서도 참조가 this입니다. 그래서이 작동합니다

static foo(){ 
    this.bar(); 
} 
+1

저는 자바 스크립트가 약간 혼란 스럽다고 생각합니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes – Derek

+0

특정 부분을 가르쳐 주시겠습니까? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes#Static_methods – hcvst

+0

달성하려는 것은 무엇입니까? 하위 클래스의 기본 클래스에 아무 것도 선언하지 않았습니다. 그래서'B.foo()'호출은 아무것도 리턴하지 않을 것입니다. – Dandy

답변

0

나는 것 같다 당신이 이미 B.foo으로해야 할 일을 얻을 그렇다고, 당신의 필요에()를 조금 혼란 스러워요. 그럼, 니가 필요한거야?

class A { 

    static foo(){ 
    // call subclass static method bar() 
    // Because it is "static" you reference it by just calling it via 
    // the class w/o instantiating it. 
    B.bar() 

    } 
} 

class B extends A { 

    static bar(){ 
    // do something 
    console.log("I am a static method being called") 
    } 
} 

// because "foo" is static you can call it directly off of 
// the class, like you are doing 
B.foo() 

// or 
var D = new B() 
D.bar() // won't work ERROR 
A.foo() // Works <-- Is this is specifically what you are asking? Or 
     // calling it in the Super class like B.bar(), that is done in static method foo? 

이 질문은 무엇입니까? 이 질문에 대한 답변을 얻지 못하면 내가 잘못 이해하고있는 부분을 알려주십시오. 감사.

+0

고마워요 @ 제임스. 명시 적으로'B.bar() '를 호출하는 대신'A'는 다른 하위 클래스를 가질 수 있으므로'subClassRef.bar()'와 같은 것을 호출하고 싶습니다. – hcvst

관련 문제