Как ловить вызов несуществующих методов?

Как в объекте ловить вызовы к несуществующим методам? Чтобы работало и в IE 11. Использую модули requirejs.

define( ['dependency1', 'dependency2'], function( d1, d2) {
  var Facade = {
    methodA  : function(){ /* делай раз */ }
    ,methodB : function(){ /* делай два */ }
    ,catchAll: function(){ console.log("такого метода нет"); }
  };
  return Facade;
});

Вызов методов я не могу контролировать. Вызывают просто Obj.methodX() где-то там, в чужом коде. Именно внутри объекта как-то надо с этим разбираться.

Читал про Proxy, но он не поддерживается в IE.
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ответы на вопрос 2
mlnkv
@mlnkv
JavaScript Developer
Либо реализуйте пустые функции
{
  foo: function() { console.log("такого метода нет") },
  bar: function() { console.log("такого метода нет") },
  baz: function() { console.log("такого метода нет") }
}

либо сделайте вызовы через функцию обертку
var obj = {
  callMethod: function(name) {
    if (typeof obj[name] === "function") {
      obj[name].apply(null, [].slice.call(arguments, 1))
    } else {
      console.log("такого метода нет")
    }
  }
}
Ответ написан
BBoyJuss
@BBoyJuss
WordPress, интерфейсы и все вытекающие
Проверять его typeof
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 15:01
35000 руб./за проект
19 апр. 2024, в 14:12
30000 руб./за проект