2013-10-09 47 views
0

我需要知道,如果一個原型類理解的方法。例如: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的,在這種情況下,委託它。

謝謝!

回答

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