2010-03-26 3 views

Répondre

10

Il y a dans Mozilla Javascript 1.5 de toute façon (c'est non standard).

Check this out:

var myObj = { 
    foo: function() { 
     alert('foo!'); 
    } 
    , __noSuchMethod__: function (id, args) { 
     alert('Oh no! '+id+' is not here to take care of your parameter/s ('+args+')'); 
    } 
} 
myObj.foo(); 
myObj.bar('baz', 'bork'); // => Oh no! bar is not here to take care of your parameter/s (baz,bork) 

assez cool. Lire la suite à https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/NoSuchMethod

+0

Ceci est très cool et presque exactement ce que je cherchais - Y at-il un équivalent qui fonctionne dans IE 6+? – Emory

+0

En décembre 2015, il s'agit d'une fonction obsolète qui ne devrait plus être utilisée. –

0
someFunctionThatMayBeUndefinedIAmNotSure ? someFunctionThatMayBeUndefinedIAmNotSure() : throw new Error("Undefined function call"); 
5
try { 
foo(); 
} 
catch(e) { 
    callUndefinedFunctionCatcher(e.arguments); 
} 

MISE À JOUR

passant e.arguments à votre fonction vous donnera ce que vous avez essayé de passer à l'origine.

+5

'arguments' n'est pas une propriété de l'objet' Error', c'est une propriété des fonctions. Dans votre exemple, 'e' est un objet d'erreur et donc' e.arguments' sera indéfini. –

+0

Je pense que c'est juste ce genre de vérification de la stratégie fourre-tout que les gens veulent échapper. – npup

+1

Je viens de courir ce qui suit en chrome: try { bar ('foo'); Capture (e) { alerte (e.arguments); pour (x dans e) { alerte (x) }} il alerte 'foo' et puis 'arguments' alertes en tant que propriété de e. Suis-je fou? Ou juste encore faux? –

Questions connexes