¿Cómo puedo obtener la dirección de memoria de una variable JavaScript?


¿Es posible encontrar la dirección de memoria de una variable JavaScript? El código JavaScript es parte de (incrustado en) una aplicación normal donde JavaScript se utiliza como un front-end para C++ y no se ejecuta en el navegador. La implementación de JavaScript utilizada es SpiderMonkey.

Author: vivekian2, 2009-03-12

2 answers

Si fuera posible, dependería mucho del motor javascript. El motor javascript más moderno compila su código usando un compilador just in time y meterse con sus variables internas sería malo para el rendimiento o malo para la estabilidad.

Si el motor lo permite, ¿por qué no hacer una interfaz de llamada a función a algún código nativo para intercambiar los valores de la variable?

 14
Author: Emiel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-12 16:59:30

Es más o menos imposible - la estrategia de evaluación de Javascript es utilizar siempre call by value, pero en el caso de los Objetos (incluidos los arrays) el valor pasado es una referencia al Objeto, que no se copia ni clona. Si reasignas el Objeto en sí en la función, el original no se cambiará, pero si reasignas una de las propiedades del Objeto, eso afectará al Objeto original.

Dicho esto, ¿qué estás tratando de lograr? Si solo se trata de pasar datos complejos entre C++ y Javascript, podría usar una biblioteca JSON para comunicarse. Envíe un objeto JSON a C++ para su procesamiento y obtenga un objeto JSON para reemplazar el anterior.

 8
Author: user2310967,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-23 15:34:37