Подтвердить что ты не робот

Как получить адрес памяти переменной JavaScript?

Можно ли найти адрес памяти переменной JavaScript? Код JavaScript является частью (встроенной) в обычное приложение, где JavaScript используется как интерфейс С++ и не запускается в браузере. Используемая реализация JavaScript - SpiderMonkey.

4b9b3361

Ответ 1

Если бы это было возможно вообще, это было бы очень зависимо от механизма javascript. Более современный механизм javascript скомпилирует свой код с использованием компилятора только во времени и возится со своими внутренними переменными, либо будет плохим для производительности, либо плохим для стабильности.

Если движок разрешает это, почему бы не сделать интерфейс вызова функции некоему собственному коду для обмена значениями переменных?

Ответ 2

Это более или менее невозможно. Стратегия оценки Javascript всегда должна использовать вызов по значению, но в случае объектов (включая массивы) переданное значение является ссылкой на объект, который не копируется и не клонируется. Если вы переназначаете сам объект в функции, оригинал не будет изменен, но если вы переназначите одно из свойств объекта, это повлияет на исходный объект.

Итак, что вы пытаетесь достичь? Если он просто передает сложные данные между С++ и Javascript, вы можете использовать библиотеку JSON для общения. Отправьте объект JSON на С++ для обработки и получите объект JSON для замены старого.