Visit Mozilla.org

JS DefineObject

出典: MDC

あるオブジェクトのプロパティとなるオブジェクトを生成する関数です。

[編集] 構文

JSObject * JS_DefineObject(JSContext *cx, JSObject *obj,
    const char *name, JSClass *clasp, JSObject *proto,
    uintN flags);
Name Type Description
cx JSContext * エラー報告に用いるランタイム環境から派生したコンテキストへのポインタ

リクエストが必要。 (JS_THREADSAFE ビルドでは、呼び出し側はこの JSContext 上のリクエストでなければなりません。)

obj JSObject * 生成したオブジェクトをプロパティとして持つオブジェクトへのポインタ
name const char * objでのプロパティ名
clasp JSClass * オブジェクト生成に用いるクラス
proto JSObject * オブジェクト生成に用いるプロトタイプ
flags uintN 生成したオブジェクトの属性を指定するフラグ

[編集] 説明

JS_DefineObjectは、オブジェクトのインスタンスを生成し、それを引数objで指定した既存オブジェクトのプロパティとして設定する関数です。引数nameで、objでのプロパティ名を指定し、flagsでそのプロパティの属性を指定します。以下の表で設定可能なflagsの値を示します。これらの値は単一、あるいは複数の値の論理和として引数に与えることができます。

Flag Purpose
JSPROP_ENUMERATE forinループを使ったアクセス(Core JavaScript 1.5 Guide:Object Manipulation Statements)を可能にします。
JSPROP_READONLY プロパティの値を読み取り専用にします。
JSPROP_PERMANENT プロパティの削除を不可能にします。
JSPROP_EXPORTED Property can be imported by other objects.
JSPROP_INDEX Property is actually an index into an array of properties, and is cast to a const char *.

引数claspはオブジェクトの生成時に用いる基底クラスへのポインタ、引数protoはプロトタイプへのポインタをそれぞれとります。protoNULLを指定した場合、JavaScriptは自分自身をプロトタイプとします。引数objはオブジェクトの親オブジェクトになります。

JS_DefineObjectが成功したとき、返値は新たに生成したプロパティオブジェクトへのポインタになります。もしすでにプロパティが設定されていた場合、オブジェクトは生成されず、返り値はNULLになります。

[編集] 参照

Groups Functions
Documents LXR ID Search
Entries

JSClass, JS_DefineConstDoubles, JS_DefineElement, JS_DefineFunction, JS_DefineFunctions, JS_DefineProperties, JS_DefineProperty, JS_DefinePropertyWithTinyId, JS_NewObject, JS_ValueToObject