Доступ ко всем локальным переменным
Каждая глобальная переменная в javascript является свойством 'window'
По всей видимости, вся локальная переменная (а также аргументы) сохраняется как свойства 'Call object' (см. главу 4.6.2 каждой функции. Существенно только для времени жизни указанной функции.
В основном я хочу иметь возможность делать
for (var obj in CallObject ) { // }
Могу ли я получить доступ к указанному объекту, содержащему локальные переменные, и если да, то каким образом? В качестве альтернативы есть ли другой способ доступа ко всем локальным переменным функции.
[изменить]
Оказывается, что аргументы являются свойством объекта активации функции. Это должно быть где-то сохранено.
"Объект активации является чисто спецификация механизм. это невозможно для программы ECMAScript для доступа к объекту активации."
Выключает состояния ECMAScript. Мне не разрешен доступ к нему.
Как получить доступ к свойствам аргументов и каким-то образом связать их с локальными переменными?
Ответы
Ответ 1
Нет. Нет никакого способа сделать это в любой версии браузера JavaScript.
Теоретически возможно, что реализация может предоставить расширение, позволяющее коду проверять текущий объект Variable (также известный как объект активации внутри функции; "объект вызова" - это термин, составленный Flanagan, который не упоминается нигде внутри ECMAScript spec), но никакая реализация, которую я знаю, не делает этого.
Ответ 2
Вы получаете неявный массив, называемый "аргументы" в каждой функции, но кроме этого нет такой вещи.