Доступ к ресурсу undefined в JavaScript

Механизм JavaScript Spider-Monkey реализует функцию обратного вызова __noSuchMethod__ для объектов JavaScript.

Эта функция вызывается всякий раз, когда JavaScript пытается выполнить метод undefined объекта.

Я хотел бы установить функцию обратного вызова для объекта, который будет вызываться всякий раз, когда к объекту, к которому осуществляется доступ или назначается свойство undefined.

Я не нашел функцию __noSuchProperty__, реализованную для объектов JavaScript, и я являюсь любопытным, если есть какое-либо обходное решение, которое достигнет того же результата.

Рассмотрим следующий код:

var a = {};
a.__defineGetter__("bla", function(){alert(1);return 2;});
alert(a.bla);

Это эквивалентно [alert(1);alert(2)] - даже если a.bla undefined.

Я хотел бы добиться того же результата, но с неизвестными свойствами (т.е. не зная заранее, что доступ к свойствам "бла" будет доступным)

Ответ 2

Я хотел бы установить функцию обратного вызова для объекта, который будет вызываться всякий раз, когда к объекту, к которому осуществляется доступ или назначается свойство undefined.

Хотя это не исчерпывающий ответ, имейте в виду, что назначение свойств undefined объекта является ключевой особенностью языка JavaScript.

Также обратите внимание, что __noSuchMethod__ является нестандартным методом, реализованным с помощью движков Mozilla JavaScript. Существует открытый запрос функции, чтобы это было реализовано в движке Google Chrome V8, но насколько я знаю, это не поддерживается в других браузерах.

По состоянию на февраль 2014, Похоже, что это не будет поддерживаться в ближайшее время.

Ответ 3

Надеюсь, ребята, я думаю, нам нужно проголосовать за эту функцию в списке выпусков Google V8, здесь http://code.google.com/p/v8/issues/detail?id=264

Похоже, что здесь очень мало внимания уделяется этой важной функции: (