web-dev-qa-db-fra.com

Comment vérifier si un objet a une fonction? (DoJo)

var testObj = this.getView();

Comment puis-je vérifier avec DoJo (ou simplement JS natif) si testObj a callableFunction avant d'essayer d'appeler callableFunction() et d'échouer s'il n'y est pas? Je préférerais une solution native DoJo car j'en ai besoin pour fonctionner sur tous les navigateurs.

36
antonpug

Vous pouvez l'appeler comme ceci:

testObj.callableFunction && testObj.callableFunction();

ou en détails:

if (typeof testObj.callableFunction == 'function') {
    testObj.callableFunction();
}
82
dfsq

dojo a une fonction que vous pouvez utiliser pour effectuer le test.

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

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

});
4
Craig Swing

Vous devez tester que la propriété existe et est une fonction:

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