web-dev-qa-db-ja.com

JavaScript変数のメモリアドレスを取得するにはどうすればよいですか?

JavaScript変数のメモリアドレスを見つけることは可能ですか? JavaScriptコードは、JavaScriptがC++のフロントエンドとして使用され、ブラウザで実行されない通常のアプリケーションの一部です(埋め込まれています)。使用されるJavaScript実装はSpiderMonkeyです。

53
vivekian2

可能であれば、javascriptエンジンに大きく依存します。最新のjavascriptエンジンは、ジャストインタイムコンパイラを使用してコードをコンパイルし、内部変数をいじると、パフォーマンスが低下するか、安定性が低下します。

エンジンで許可されている場合、変数の値を交換するために、ネイティブコードへの関数呼び出しインターフェイスを作成してみませんか?

17
Emiel

多かれ少なかれ不可能です-Javascriptの評価戦略は常に値による呼び出しを使用することですが、オブジェクト(配列を含む)の場合、渡される値はオブジェクトへの参照であり、コピーまたは複製されません。関数でオブジェクト自体を再割り当てすると、元のオブジェクトは変更されませんが、オブジェクトのプロパティの1つを再割り当てすると、元のオブジェクトに影響します。

とはいえ、何を達成しようとしているのですか? C++とJavascriptの間で複雑なデータを渡すだけの場合は、JSONライブラリを使用して通信できます。 JSONオブジェクトを処理のためにC++に送信し、古いオブジェクトを置き換えるJSONオブジェクトを取得します。

10
user2310967