Есть ли способ обработки неопределенных функций, вызываемых в JavaScript? - PullRequest
7 голосов
/ 27 марта 2010

Если у меня есть функция, подобная следующей:

function catchUndefinedFunctionCall( name, arguments )
{
    alert( name + ' is not defined' );
}

и я делаю что-то глупое, как

foo( 'bar' );

когда foo не определен, есть ли способ, которым я могу вызвать мою функцию catch с именем, равным 'foo', и аргументами, представляющими собой массив, содержащий 'bar'?

Ответы [ 3 ]

10 голосов
/ 27 марта 2010

В любом случае есть в Mozilla Javascript 1.5 (это нестандартно).

Проверьте это:

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)

Довольно круто. Подробнее на https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Object/NoSuchMethod

5 голосов
/ 27 марта 2010
try {
 foo();
}
catch(e) {
   callUndefinedFunctionCatcher(e.arguments);
}

ОБНОВЛЕНО

Передача e.arguments в вашу функцию даст вам то, что вы пытались передать изначально.

0 голосов
/ 27 марта 2010
someFunctionThatMayBeUndefinedIAmNotSure ? someFunctionThatMayBeUndefinedIAmNotSure() : throw new Error("Undefined function call");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...