2013-10-09 5 views
0

프로토 타이핑 된 클래스가 메서드를 이해하는지 알아야합니다. 예 :자바 스크립트 : 클래스의 모든 프로토 타입 함수를 차단하는 방법은 무엇입니까?

MyClass.prototype.myMethod1 = function() { 
    ... 
    return "Hello World!"; 
}; 

MyClass.prototype.myMethod2 = function() { 
    ... 
    return "Bye World!"; 
}; 

MyClass.prototype.caller = function(functionName){ //This is the method that I need to know 
    if (functionName == "myMethod1") return "Exist!, is myMethod1."; 
    if (functionName == "myMethod2") return "Exist!, is myMethod2."; 
    return "Sorry, it doesn't exists here."; 
} 

이것은 좋지 않은 예입니다. 그 방법이 MyClass에 대해 이해되지 않는지 확인해야하며,이 경우 위임하십시오.

감사합니다.

답변

0

이 질문에 대한 실제 답변이 아닙니다. 의견에 문제가 해결되었습니다. Javascript에는 마법 방법이 없으므로이 질문에 대한 실제 답변은 없습니다.

개체에 특정 방법이 있는지 확인해야합니까? 나는 이것이 당신이 찾고있는 무엇을 생각 :

MyClass.prototype.caller = function(functionName) { 
    // Check whether the property is a function 
    if (typeof(this[functionName]) == "function") { 
     // Method exists 
     return true; 
    } else { 
     // Method does not exist 
     return false; 
    } 
}; 
+0

예,하지만 _caller_ 존재하지 않습니다. 잘못된 호출을 할 때 _MyClass_를 수정하는 방법을 알아야합니다. 만약 _MyClass_가 그 함수를 실행하지 않는다면, _MyClass_는 나에게 경고하거나 다른 클래스에 위임해야합니다. – Lmyr

+0

@Lmyr 존재하지 않는 함수를 호출 할 때마다 호출 될 함수를 의미합니까? – Butt4cak3

+0

예! 어댑터처럼. 함수 호출과 실행 사이에 들어가야합니다. – Lmyr

0

사용 MyClass에의 프로토 타입의 각 메서드 및 속성을 반복 할 수 있습니다 :

MyClass.prototype.hasMethod = function(name) { 
    for (key in this) { 
    if (key == name) 
     return true; 
    } 
    return false; 
} 
+0

"hasMethod"함수를 재정의하지 않고도 그런 것이 필요합니다. _MyClass_ 함수를 실행하기 전에 확인해야합니다. – Lmyr