class Thing {
constructor(parameter) {
if (parameter) {
this.x = parameter;
}
return this;
}
getX() {
return this.x;
}
static specialThing() {
return new Thing('Special Thing');
}
}
let thingy = Thing.specialThing();
thingy.getX(); // 'Special Thing'
위의 내용을 JavaScript로 작성하고 싶습니다. (더 복잡한 형식 임에도 불구하고). 현재이 코드를 실행할 때 잘 실행되지만 클래스 내에서 함수를 사용하면 클래스의 인스턴스화 된 버전이 반환된다는 것에 이상하게 느껴집니다. 이 방법으로 내 코드를 작성하지 않는 이유가 있습니까?ES6 클래스를 사용하는 경우 정적 메서드에서 해당 클래스의 인스턴스화를 반환해도됩니까?
정적 메서드에 대한 작동 대안은 다음과 같습니다
Thing.specialThing =() => {
return new Thing('Special Thing');
};
이러한 것들 중 하나를 사용하여 몇 가지 장단점이 (있는 경우)은 무엇입니까? 내가 알지 못하는이 목표를 성취 할 수있는 다른 더 좋은 방법이 있습니까?
그 문제에 아무것도가 없습니다. – Pointy
이 구조는 다른 언어에서 매우 일반적입니다. 왜냐하면 클래스가 자바 스크립트에 익숙하지 않기 때문에 js에서 본 havent 유일한 이유입니다. –
@Pointy & @Pamblam 응답에 감사드립니다! 일반적인 질문 - 답변하는 대신 답변으로 답변하는 이유는 무엇입니까? – thisissami