JSAPI リファレンス

by 2 contributors:

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

補足: FOSS のページに、Spidermonkey と JASPI の使用を助ける、他のライブラリやプログラムへのリンクがあります。

アルファベット順一覧

ランタイムとコンテキスト

ロケールコールバック:

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

スクリプト

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

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

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

エラーハンドリング

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

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

値と型

jsval 定数:

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

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

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

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

typeof のように振る舞う関数:

=== のように振る舞う関数:

メモリ管理

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

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

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

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

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

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

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

その他の GC API:

数値

文字列

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

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

オブジェクト

プロパティ

これらの関数は、直接スクリプトがオブジェクトのプロパティにアクセスする方法に相当します:

次の低レベルの関数は、JSAPI アプリケーションが、プロパティの実装方法の詳細へのアクセスを許可します。"Define" は "set" の低レベル版であり、追加の設定へのアクセスを提供し、setter を呼び出しません。同様に、"lookup" は "get" の低レベル版であり、追加のオプションを与え、getter を呼び出しません。

次の関数は、JS_GetProperty および JS_GetPropertyById のように振る舞います。ただし、E4X XML オブジェクト上の操作は除きます。

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

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

jsid 定数:

jsid の型を調べる関数とマクロ:

クラス

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

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

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

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

JSClass メソッド型:

JSExtendedClass メソッド型:

JSObjectOps メソッド型:

JSXMLObjectOps メソッド型:

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

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

配列

関数

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

関数アクセサリ:

関数の生成:

正規表現

セキュリティ

スレッド

次の関数は SpiderMonkey のスレッドモデルをサポートしています。

JSAPI 1.7 まで これらは JS_THREADSAFE ビルドでのみ利用可能です。

SpiderMonkey 1.8 の新機能 これらの関数はいつでも利用可能です。ただし、JS_THREADSAFE 無しのビルドでは何もしません

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

時間

コールバック型

ネイティブ関数型:

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

上記のクラスも参照してください。

マクロ

C++ の機能

ドキュメントのタグと貢献者

Contributors to this page: Marsf, Okome
最終更新者: Marsf,