2

ディクショナリとセットを GJS で実装したいのですが、 で使用できる比較演算子は だけなObjectので===、標準の JavaScript で実装すると s がキーとして使用されると遅くなりObjectます。GJS は、Map と Set がまだない公式のスタンドアロン SpiderMonkey リリース (1.8.5) を使用します。オブジェクト ID を比較できるようにする API を導入するための最良の方法は何ですか?

  • オブジェクト ID の取得と比較を可能にする GJS 用の C モジュールを作成できます。
    • たぶん、JSObjectsへのポインタを使用できます。
      • SpiderMonkey が動かないことは保証されていJSObjectますか?
      • C 標準では、同じブロックにないポインターを比較することはできません。
      • doubleまた、新しい 64 ビット コンピュータには、の 53 ビット整数に収まらない 64 ビット アドレスがあります。
    • オブジェクトと数字を手動で関連付けることができました。
      • JSObjectJavaScript から見えるプロパティを追加せずに、任意のデータを任意の既存のデータに関連付けるにはどうすればよいですか?
  • それとも、C モジュールを書かずに純粋な JavaScript で実行できるようにする SpiderMonkey 固有の拡張機能があるのでしょうか?
4

0 に答える 0