Javascript: Как перехватить все функции-прототипы класса?
Мне нужно знать, понимает ли класс-прототип метод. Например:
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 и, в этом случае, делегировать его.
Спасибо!
2 ответа
Можно перебрать каждый метод и свойство в прототипе MyClass, используя:
MyClass.prototype.hasMethod = function(name) {
for (key in this) {
if (key == name)
return true;
}
return false;
}
Это не фактический ответ на вопрос. Проблема была решена в комментариях. На этот вопрос нет реального ответа, потому что в 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;
}
};