Object.__noSuchMethod__ - властивість __noSuchMethod__ посилається на функцію, виконують кожен раз при виклику на об'єкті неіснуючого методу.
Хоча властивість __noSuchMethod__ і нестандартна, специфікація ECMAScript Harmony (ES6) містить об'єкт Proxy, за допомогою якого ви можете зробити все те ж саме, що і при використанні цієї властивісті (і навіть більше).
obj.__noSuchMethod__ = function;
function - Функція, що має вигляд function (id, args){. . . }
За замовчуванням, при спробі викликати не існуючий в об'єкті метод, буде викинуте виключення TypeError. Цю поведінку можна обійти, визначивши функцію __noSuchMethod__ в якості члена об'єкта. Функція приймає два аргументи, перший є ім'ям методу, який спробували викликати, а другий - масивом аргументів, які були передані в метод при його виклику. Другий аргумент є масивом (тобто, він успадковується через ланцюжок прототипів від Array.prototype), а не масивоподібним об'єктом arguments. Якщо даний метод не може бути викликаний, або через те, що він встановлений в undefined за замовчуванням, або видалений, або вручну встановлений в не-функцію, движок JavaScript повернеться до викидання виключення TypeError.
Не всі браузери підтримують.
var o = {
__noSuchMethod__: function(id, args){ console.log(id, '(' + args.join(', ') + ')'); }
};
o.foo(1, 2, 3);
o.bar(4, 5);
o.baz();
// Виведе
// foo (1, 2, 3)
// bar (4, 5)
// baz ()