Как я могу получить адрес памяти переменной JavaScript?
можно ли найти адрес памяти переменной JavaScript? Код JavaScript является частью (встроенным) обычного приложения, где JavaScript используется в качестве интерфейса для C++ и не запускается в браузере. Используемая реализация JavaScript-это SpiderMonkey.
2 ответов
Если это вообще возможно, это будет очень зависеть от движка javascript. Более современный движок javascript компилирует свой код с помощью компилятора just in time и возиться с их внутренними переменными будет либо плохо для производительности, либо плохо для стабильности.
Если движок позволяет, то почему бы не сделать интерфейс вызова функции машинного кода для обмена значений переменной?
Это более или менее невозможно - стратегия оценки Javascript заключается в том, чтобы всегда использовать вызов по значению, но в случае объектов (включая массивы) переданное значение является ссылкой на объект, который не копируется или клонируется. Если вы переназначите сам объект в функции, оригинал не будет изменен, но если вы переназначите одно из свойств объекта, это повлияет на исходный объект.
тем не менее, чего вы пытаетесь достичь? Если это просто передача сложных данных между C++ и Javascript для связи можно использовать библиотеку JSON. Отправьте объект JSON на C++ для обработки и получите объект JSON для замены старого.