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;
    }
};
Другие вопросы по тегам