Доступ ко всем локальным переменным

Каждая глобальная переменная в javascript является свойством 'window'

По всей видимости, вся локальная переменная (а также аргументы) сохраняется как свойства 'Call object' (см. главу 4.6.2 каждой функции. Существенно только для времени жизни указанной функции.

В основном я хочу иметь возможность делать

for (var obj in CallObject ) { // }

Могу ли я получить доступ к указанному объекту, содержащему локальные переменные, и если да, то каким образом? В качестве альтернативы есть ли другой способ доступа ко всем локальным переменным функции.

[изменить]

Оказывается, что аргументы являются свойством объекта активации функции. Это должно быть где-то сохранено.

"Объект активации является чисто спецификация механизм. это невозможно для программы ECMAScript для доступа к объекту активации."

Выключает состояния ECMAScript. Мне не разрешен доступ к нему.

Как получить доступ к свойствам аргументов и каким-то образом связать их с локальными переменными?

Ответы

Ответ 1

Нет. Нет никакого способа сделать это в любой версии браузера JavaScript.

Теоретически возможно, что реализация может предоставить расширение, позволяющее коду проверять текущий объект Variable (также известный как объект активации внутри функции; "объект вызова" - это термин, составленный Flanagan, который не упоминается нигде внутри ECMAScript spec), но никакая реализация, которую я знаю, не делает этого.

Ответ 2

Вы получаете неявный массив, называемый "аргументы" в каждой функции, но кроме этого нет такой вещи.