2010-11-30 91 views

回答

4

您對功能的檢查typeof,例如:

if(typeof this["functionName"] != "undefined") { 
    alert("uh oh, doesn't exist"); 
} 

如果你需要檢查它是否存在,是一個功能是多餘的肯定:

if(typeof this["functionName"] == "function") { 
    this["functionName"](); //it exists, call it 
} 

或者更輕鬆的版本:

if(this["functionName"]) this["functionName"](); 

如果名稱不變(例如,我誤解了問題),只要用點符號,就像這樣:

if(this.functionName) this.functionName(); 

或者當然,這並不一定是this ...無論對象你檢查,請使用,如果它是一個全球性的功能使用window

+1

如果'functionName'不是函數呢? – jAndy 2010-11-30 12:04:35

+0

@jAndy - 他想要一個函數來調用這個函數,這個函數可能會或可能不會被定義......你當然可以改變它,並檢查`.toString()`或`typeof`作爲`function`,但我會說你在這些情況下有不好的命名重疊...通常你想要兩個,例如它可能是一個函數或選擇器,或者一個布爾,這個跨框架有幾個例子:) – 2010-11-30 12:06:24

1

取決於幾乎你所在的範圍。

但總的來說if('function_name_to_check' in this)將返回true如果其中有名稱的全局或局部範圍的屬性。

這個檢查必須緊跟該類型額外的檢查:

​​

可以肯定,這是一個功能。

0

如果你只是想避免錯誤,可以轉敗爲勝:

try{function2call();} 
catch(e){alert('function2call() doesn\'t exist');} 
相關問題