나는 함수를 호출 할 때마다 다시 정의되지 않도록 클래스의 프로토 타입에 직접 메서드를 할당하는 것이 좋습니다.프로토 타입에 메서드를 정의하면 해당 메서드를 생성자에서 어떻게 호출해야합니까?
var A = function() {
this.prop = "A property";
}
A.prototype.method = function() {
return "A method";
}
이렇게 생성자에서 이와 같이 정의 된 메서드를 호출하려고합니다. 이것이 가능한가?
생성자 안에 스텁 메서드를 만드는 것은 프로토 타입의 함수 대신 호출되기 때문에 작동하지 않습니다. 이 작업을 수행 할 수있는 유일한 방법은 괄호 구문 this["initialize"]()
을 통해 함수를 참조하는 것입니다.이 함수는 꽤 우아하지 않은 것처럼 보입니다.
var A = function (options) {
this["initialize"](options); // function isn't defined yet but will be soon!
}
A.prototype.initialize = function (options) {
// do something with options.
}
이것은 꽤 janky 같아서이 기능을 호출하는 데 가장 적합한 방법이 아닐 것입니다. 다른 방법이 있습니까, 아니면 뭔가 빠졌습니까?
그건 그렇고, 내 경우에는 옵션 인자를 취하고 그 데이터로 인스턴스 메소드를 호출하여 옵션을 처리하는 생성자를 생성하려고합니다. 편집을 위해 +1 –