Есть ли способ вызвать пользовательскую функцию при вызове неопределенной функции объекта? - PullRequest
4 голосов
/ 26 декабря 2011

Я хочу быть в состоянии сделать это

var o = {
};
o.functionNotFound(function(name, args) {
  console.log(name + ' does not exist');
});

o.idontexist(); // idontexist does not exist

Я думаю, что эта функция существует, но я не могу ее найти.

1 Ответ

2 голосов
/ 26 декабря 2011

В своем текущем состоянии JavaScript не поддерживает именно ту функциональность, которая вам требуется.Пост в комментарии дает подробную информацию о том, что можно и нельзя делать.Однако, если вы хотите отказаться от использования метода «.», Вот пример кода, близкий к тому, что вы хотите:

var o = 
{
    show: function(m)
    {
        alert(m);
    },

    invoke: function(methname, args)
    {
        try
        {
            this[methname](args);
        }
        catch(e)
        {
            alert("Method '" + methname + "' does not exist");
        }   
    }
}

o.invoke("show", "hello");
o.invoke("sho", "hello");

Вывод:

привет

Метод 'шо' не существует

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...