Object.__noSuchMethod__

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 ()