2013-02-19 21 views
33
var testObj = this.getView(); 

Jak mogę skontaktować się z Dojo (lub po prostu rodzimy JS) jeśli testObj ma callableFunction przed I rzeczywiście spróbować zadzwonić callableFunction() i zawodzić, jeśli go tam nie ma? Wolałbym natywne rozwiązanie DoJo, ponieważ jest to potrzebne do pracy we wszystkich przeglądarkach.Jak sprawdzić, czy obiekt ma funkcję? (Dojo)

Odpowiedz

78

można nazwać tak:

testObj.callableFunction && testObj.callableFunction(); 

lub w szczegółach:

if (typeof testObj.callableFunction == 'function') { 
    testObj.callableFunction(); 
} 
+0

Dzięki! to działa :) – antonpug

+0

serdecznie zapraszamy :) – dfsq

+0

@dfsq Czy nie powinno to być === "funkcja"? – Ethan

2

Należy sprawdzić, czy właściwość istnieje i jest funkcją:

var returnFromCallable = typeof testObj.callableFunction === 'function' && 
    testObj.callableFunction(); 
4

dojo ma funkcja, której możesz użyć do wykonania testu.

require(["dojo/_base/lang"], function(lang){ 

    var testObj = this.getView(); 
    if(lang.isFunction(testObj.callableFunction)){ 
    testObj.callableFunction(); 
    } 

}); 
Powiązane problemy