公式の例 Pointクラスを公開することは、プログラム内に固定数のインスタンスがあることを前提としているようです。 Javascriptでnewが呼び出されたときに、C++コードで新しいインスタンスがどのように割り当てられるかは明確ではありません。
複数のインスタンスを持つことができるクラスをどのように公開しますか?たとえば、Imageクラス:
var img1 = new Image( 640, 480 );
var img2 = new Image( 1024, 768 );
img1.clear( "red" );
img2.clear( "black" );
これは最高です C++オブジェクトをV8Javascriptに公開することで見つけたブログ投稿 。それはより深い詳細に入り、コードスニペットでそれをより小さなステップに分解します。警告:コードスニペットにはほとんど矛盾がなく、理解するのに数回の読み取りが必要でした。事前に私の簡単な要約を読むことは役立つかもしれません:
new
が呼び出される場所)をC++コンストラクターに接続するだけです。new
演算子を使用し、C++クラスコンストラクターを呼び出します。次に、ステップ1.2で作成したwrapObject()メソッドを呼び出して、オブジェクトをラップします。ここで、ステップ2.2で割り当てられたメモリは、しばらくの間delete
される必要があります。 更新:次のブログエントリ「 永続ハンドル 」では、これについて詳しく説明しています。
これらのブログ投稿でほのめかされている実際のコード に関する私のメモ:
wrapPoint()
メソッドは、実際には実際のコードのunwrap()
メソッドに類似しています。 notwrap()
SetInternalFieldCount(0
、constructorCall
これは私がしばらく前に書いたヘルパーで、v8でのコンテキストの公開と処理を非常に簡単にします。それが役に立てば幸い。
https://gamedev.stackexchange.com/questions/2796/binding-c-and-v8-javascript-from-google/2797#2797