Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перехват глобальных переменных (https://javascript.ru/forum/misc/8386-perekhvat-globalnykh-peremennykh.html)

inv 22.03.2010 21:58

Перехват глобальных переменных
 
Добрый день.
Как известно, "глобальные" переменные принадлежат объекту window. То есть запись вне функции
a = 5

практически аналогична записи
window.a = 5

Так же происходит и при чтении.

Есть ли способ сделать так, чтобы при чтении из глобальной области видимости значения брались из какого-то другого объекта?
Поясню:
alert( a )
alert( b )

a и b - они принадлежат window и читаются из него. Можно ли "перенаправить" запрос на чтение в какой-то другой объект?
Пробовал в частности примерно так:
var variables = { a: 5, b: 6 };
Window.prototype = variables;
alert( a );     // хочу 5

Ошибка... Есть ли способ реализовать подобное? Фактически, похоже на register_globals :)

Gvozd 22.03.2010 22:12

Цитата:

Сообщение от inv
Ошибка...

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

Сообщение от inv
Есть ли способ сделать так, чтобы при чтении из глобальной области видимости значения брались из какого-то другого объекта?

with

B@rmaley.e><e 22.03.2010 22:15

геттеры / сеттеры? К сожалению, они работают только для жестко заданных свойств объекта.

inv 22.03.2010 22:23

Gvozd, !!!
Точно, with! Спасибо. Вроде то, что нужно. :write:


Часовой пояс GMT +3, время: 07:37.