web-dev-qa-db-fra.com

Comment obtenir l'adresse mémoire d'une variable JavaScript?

Est-il possible de trouver l'adresse mémoire d'une variable JavaScript? Le code JavaScript fait partie (intégré à) une application normale dans laquelle JavaScript est utilisé comme frontal de C++ et ne s'exécute pas sur le navigateur. L'implémentation JavaScript utilisée est SpiderMonkey.

53
vivekian2

Si cela était possible, cela dépendrait beaucoup du moteur javascript. Le moteur javascript plus moderne compile son code en utilisant un compilateur juste à temps et jouer avec ses variables internes serait soit mauvais pour les performances, soit mauvais pour la stabilité.

Si le moteur le permet, pourquoi ne pas faire une interface d'appel de fonction à un code natif pour échanger les valeurs de la variable?

17
Emiel

C'est plus ou moins impossible - la stratégie d'évaluation de Javascript consiste à toujours utiliser l'appel par valeur, mais dans le cas des objets (y compris les tableaux), la valeur transmise est une référence à l'objet, qui n'est ni copié ni cloné. Si vous réaffectez l'objet lui-même dans la fonction, l'original ne sera pas modifié, mais si vous réaffectez l'une des propriétés de l'objet, cela affectera l'objet d'origine.

Cela dit, qu'essayez-vous d'accomplir? S'il s'agit simplement de passer des données complexes entre C++ et Javascript, vous pouvez utiliser une bibliothèque JSON pour communiquer. Envoyez un objet JSON à C++ pour traitement et obtenez un objet JSON pour remplacer l'ancien.

10
user2310967