2010-09-30 45 views
13

Cada variable global en javascript es una propiedad de 'ventana'acceso todas las variables locales

Al parecer todo variable local (aswell como argumentos) se almacenan como propiedades del 'Call object' (Véase el capítulo 4.6.2 de cada función. Persumably única existente para el tiempo de vida de dicha función.

Básicamente quiero ser capaz de hacer

for (var obj in CallObject) { // } 

¿Puedo acceder a dicho objeto que contiene las variables locales y si es así, ¿cómo? como alternativa ¿hay alguna otra manera de acceder a toda va local riables de una función.

[Editar]

Resulta que los argumentos es una propiedad del objeto de activación de una función. Esto tiene que ser almacenado en alguna parte.

"El objeto de activación es puramente un mecanismo especificación. Es imposible para un programa de ECMAScript para acceder al objeto de activación."

Aparece ECMAScript indica que no puedo acceder a él.

¿Qué ocurre al acceder a las propiedades de los argumentos y de alguna manera encadenar a las variables locales?

+2

No hay forma de hacerlo en Javascript. Además, los globales no son (estrictamente hablando) siempre propiedades de "ventana", depende de dónde se ejecuta el intérprete. En un programa de JavaScript del lado del servidor que se ejecuta en V8 o Rhino, por ejemplo, no hay "ventana", pero hay un objeto de "contexto global" que desempeña el mismo rol (en lo que respecta a su pregunta). – Pointy

Respuesta

3

No. No hay forma de hacerlo en ninguna implementación de JavaScript en el navegador.

Teóricamente es posible que una implementación proporcione una extensión para permitir que el código inspeccione el objeto variable actual (también conocido como objeto de activación dentro de una función; "objeto de llamada" es un término compuesto por Flanagan que no se menciona en ningún lugar Especificación ECMAScript) pero ninguna implementación que conozco hace esto.

1

Obtiene una matriz implícita llamada "argumentos" en cada función, pero junto a esto no existe tal cosa.

+0

sí, hay - 'esto'. pero tampoco es muy útil – mykhal

Cuestiones relacionadas