Visit Mozilla.org

JSAPI Reference

出典: MDC


JSAPISpiderMonkey JavaScript エンジンのための C API です。JSAPI の使用方法を学ぶには、Embedding SpiderMonkey および JSAPI Phrasebook をご覧ください。

目次

アルファベット順一覧

[編集] ランタイムとコンテキスト

ロケールコールバック:

ロケールコールバック型:

[編集] スクリプト

一部の JavaScript コードは直接実行されます:

JavaScript コードを可能な JSScript へとコンパイルする代わりに、複数のアイテムを実行することができます。

JavaScript コードを関数へとコンパイルすることもできます:

[編集] エラーハンドリング

次の関数は、C/C++ 関数に JavaScript 例外のスローとキャッチを許可します。:

これらの関数は、エラーを例外に、例外をエラーに翻訳します:

[編集] 値と型

jsval 定数:

jsval の型をチェックする関数とマクロ:

すべての JavaScript 型の列挙子:

関数の引数を圧縮または展開する高レベル型変換ルーチン。

次の関数は JS 値を変数型に変換します。これらは任意の型の jsval に安全に適用することができます。これらは新しいオブジェクトを返します。例えば、JS_ValueToObject(cx, s)s は新しい String ラッパーオブジェクトを作成する文字列です。これらの関数は JavaScript メソッドを呼び出します。例えば、JS_ValueToString(cx, obj)obj.toString() を呼び出します。

高速な未チェックの型キャストマクロ。これらのマクロは正しい型として知られていない値に適用してはいけません。C のキャストのように、正しくない値に適用するとクラッシュの原因となります。これらは新しいオブジェクトを作成したり JavaScript コード内に呼び出したりすることはありません。

JavaScript 言語バージョンの列挙子:

および:

[編集] メモリ管理

これらの関数は、標準 C 関数の malloc 系のように動作します。ただし、エラーは errno ではなく、SpiderMonkey のエラー API を使用して報告されます:

JavaScript オブジェクト、文字列、浮動小数点数はガーベッジコレクションの対象となります。これらの関数は、ガーベッジコレクタ(GC) へのアクセスを提供します:

これら残りの API は、アプリケーションがガーベッジコレクションを行う前に、オブジェクトをガーベッジコレクタによる破壊から保護します。

変数が root の場合、その変数へのポインタはガーベッジコレクタによって開放されません。ルートオブジェクトに対しての失敗は、よくある奇妙なクラッシュの原因です。

ローカルのルートのスコープは、オブジェクトを別の方法でガーベッジコレクタから保護します。

SpiderMonkey 1.8 (not yet released) の新機能 オブジェクトが、SpiderMonkey のデータ構造 ("slots") に格納されていない、他のガーベッジコレクタの対象への参照を含む場合、このオブジェクトは、ガーベッジコレクタのこれらの参照へのトラバース (traverse) を有効にするため、JSTraceOp フックを実装しなければなりません。しかし、ガーベッジコレクタは手の届く範囲のオブジェクトのみを整理しますが、すべてのオブジェクトを見つけることはできないため、クラッシュを引き起こします。(SpiderMonkey 1.7 以前のバージョンでは JSMarkOp フックが代わりに使用されます。これは SpiderMonkey 1.8 のリリース後は非推奨です。)

トレース API は、ガーベッジコレクタと JSTraceOp フックによって使用されます。JSAPI アプリケーションもまた、これらの API をオブジェクトグラフを検査するために使用します。(例えば、これらの API は JS ガーベッジコレクタと他のガーベッジコレクタの、とても円滑な統合をサポートします。)

その他の GC API:

[編集] 数値

[編集] 文字列

Interning 文字列は SpiderMonkey エンジンに、可能ならば既存の文字列オブジェクトを再使用するように伝えます。

external strings のための文字データはアプリケーションによって提供されるメモリに格納されます。アプリケーションはこれを、SpiderMonkey のヒープとアプリケーションのメモリの間で、データを先や後へコピーすることを防止するために使用します。

[編集] オブジェクト

[編集] プロパティ

SpiderMonkey 拡張は lvalue(オブジェクトのプロパティへの参照) を返すネイティブ関数を許可します:

jsidjsval の一種です。ごく少数の API が、jsval の代わりに jsid をプロパティ名に使用します: JS_CheckAccess および JS_Enumerate, JS_GetMethodById, JS_NextProperty

[編集] クラス

これらの API 機能は、C/C++ に実装された JavaScript からアクセス可能なカスタムクラス—オブジェクト型の定義に使用されます。

ネイティブプロパティとメソッドをクラスに追加:

JSFastNative メソッドはこれらのマクロを使用します:

JSClass の振る舞いとそのインスタンスは、コールバック関数を使用して多くの方法でカスタマイズすることができます。

JSClass メソッド型:

JSExtendedClass メソッド型:

JSObjectOps メソッド型:

JSXMLObjectOps メソッド型:

これらの stub 関数はカスタム JSClass の作成時に使用されます:

JSClass の振る舞いは、これらのフラグを使用してカスタマイズできます:

[編集] 配列

[編集] 関数

関数またはオブジェクトのメソッドの呼び出し:

関数アクセサリ:

関数の生成:

[編集] 正規表現

[編集] セキュリティ

[編集] スレッド

次の関数は SpiderMonkey のスレッドモデルをサポートしています。これらは JS_THREADSAFE ビルドでのみ利用可能です。

次の関数はすべてのビルドに存在します。ただし、JS_THREADSAFE なしのビルドでは何もしません:

[編集] 時間

[編集] コールバック型

ネイティブ関数型:

その他のコールバック型:

上記のクラスを参照。

[編集] マクロ

[編集] プリプロセッサの条件設定

[編集] C++ の機能