2017-11-04 17 views
0

인스턴스 메소드, 그렇지 않으면 호출, 클래스 메서드를 호출건조 - 어떤 인스턴스가 존재하지 않는 경우는 상황

입력 인 경우, 자동으로 "끝"을 계산 한 후

을 "종료"로 페이지를 미리 기입 "시작"

입력이 "끝"이면 단순히 페이지를 미리 채우십시오.

이 기능을 처리하기위한 클래스를 작성하려고합니다. 위의 코드를 기반으로

class EndVal(start_value) { 
    constructor() { 
    this.end_value = start_value + 10 
    $("#end").text(this.end_value) 
    } 

    static prefill(end_value) { 
    $("#end").text(end_value) 
    } 
} 

당신이 무슨 만약, 당신은 단지 new EndVal(start_value)을 할 거라고,하지만 당신은 이미 '끝'이 아닌 새로운 객체를 인스턴스화이있는 경우, 당신은 단지 EndVal.prefill(end_value)을 할 수있는 "시작" . 하지만 그것은 매우 건조하지 않습니다 ... 나는 그것을 고칠 방법을 궁금하네요, 어떻게 든 인스턴스와 클래스 메서드를 연결?

+1

흠. 이것에 대해 "DRY"하지 않는 유일한 방법은 jQuery'text()'호출입니다. 만약 당신이 그것을 자신의 기능에 넣으면, 그것은 "DRY"가 될 것입니다, 그러나 나는 그것이 당신이 요구하는 것임을 의심합니다. 명확히 해 주시겠습니까? 나는 무엇을 놓치고 있습니까? – lexith

답변

0

prefill 메서드는 this 대신 전달 된 인수를 사용해야합니다. 이제 할 수있는 생성자에서 모든 방법

class EndVal { 
 
    constructor(start_value) { 
 
    this.end_value = start_value + 10 
 
    this.constructor.prefill(this.end_value); 
 
    } 
 

 
    static prefill(end_value) { 
 
    console.log(end_value); 
 
    } 
 
} 
 

 
const endVal = new EndVal(15); 
 

 
EndVal.prefill(28);