2016-12-07 5 views
0

어떤 옵션이 최선인지 모르는 "문제"가 발생합니다. ES6 React - 정적 메서드와 생성자

내가 사실을 가정 것, 내가 정적 메서드로 정의

class C extends A { 
    fetch() { 
     this.testMethod() 
     A.testMethod2()  
    }    
} 

그것을 확장 할 때 사용하는 이상한 느낌이 클래스를 확장하고있어

지금
export default class A { 
    constructor(){ 
     this.testMethod = function testMethod(){ 
      console.log('a') 
     } 
    } 

    static testMethod2 = function() { 
     console.log('B') 
    } 
} 

다음 클래스를 말해봐 내가 클래스를 확장하면 모든 메소드 (ES5 프로토 타입 스타일)에 액세스 할 수 있습니다.

두 방법 모두 정확하다는 것을 알고 있지만 ES6/React에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까? ? 양 방법 또는 성능 문제에 대한 몇 가지주의 사항은 무엇입니까?

나는 올바른/의도 된 방식으로 느껴지기 때문에 현재 생성자를 사용하고 있지만 다른 것에 대해 "정당화"할 수는 없습니다.

이 모든

내 코드베이스에 에어 비앤비 eslint 적용에서 온 ( http://eslint.org/docs/rules/class-methods-use-this)

+0

'정적'메소드는 클래스 메소드에 불과합니다. 만약 당신이 그 방법을 사용하는 클래스 인스턴스를 가지지 않으려한다면, 이상하게 느껴질 필요가 없습니다. –

+0

정확히 달성하려는 것은 무엇입니까? 정적이 아닌 정상적인 방법으로 만듭니 까? – Timo

+0

정적 메서드는 상속의 대상이 아닙니다. 네가하는 일은 괜찮아 보인다. 이슈가 뭐야? – trincot

답변

2

는 내가 나 자신의 모든 메소드에 액세스 할 수 있도록 해주는 클래스를 확장하고있어 사실을 가정 할

실제로 그렇게 할 수 있습니다. A.testMethod2() (또는 even use this.constructor.testMethod2()) 대신 C.testMethod2()으로 전화하십시오.

프로토 타입의 특정 인스턴스와 관련이 없거나 생성자 내부와 관련이없는 함수를 정의하는 것은 바람직하지 않습니다.

+0

어떻게하면 C.testMethod2()는 할 수 있지만 this.testMethod()는 할 수 없습니까? 나는 이것이 책을 움켜 잡을 필요가 있음을 보여준다고 생각합니다 ... – CanIHazCookieNow

+0

정적 메소드는 인스턴스 ('new A','new C')가 아닌 클래스 ('A','C') 그 자체의 메소드입니다. 'this'가 인스턴스를 참조하면, 프로토 타입 객체 ('.prototype','.prototype')에서 상속받은 속성에만 접근 할 수 있습니다. – Bergi

관련 문제