2010-03-26 8 views

Respuesta

10

Hay en Mozilla Javascript 1.5 de todos modos (no es estándar).

mira esto:

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) 

muy bien. Leer más en https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/NoSuchMethod

+0

Esto es muy bueno y casi exactamente lo que estaba buscando - ¿Hay un equivalente que funcione en IE 6+? – Emory

+0

A partir de diciembre de 2015, esta es una función obsoleta que ya no debería usarse. –

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

ACTUALIZADO

pasar e.arguments a su función, se le dará lo que trató de pasar un principio.

+5

'arguments' no es una propiedad del objeto' Error', es una propiedad de las funciones. En su ejemplo, 'e' es un objeto de error y' e.arguments' no estará definido. –

+0

Creo que es solo ese tipo de control de la estrategia general que la gente quiere alejarse. – npup

+1

Acabo de ejecutar lo siguiente en chrome: try { bar ('foo'); } catch (e) { alert (e.arguments); para (x en e) { alerta (x) }} alerta a 'foo' y luego alerta a 'argumentos' como una propiedad de correo. ¿Estoy loco? O simplemente sigue mal? –

Cuestiones relacionadas