Components.interfaces
は、プロパティがそれらの名前によって索引付けされたクラスである、読み出し専用オブジェクトです。
はじめに
Components.interfaces
は、nsIJSCID インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、いくつかのコンポーネントが実装している (あるいは未実装の可能性もあります) XPCOM インターフェースのひとつを表します。
対応する .idl
の宣言が [scriptable]
として設計されたインターフェースのみを反映します。つまり、XPConnect が JavaScript へ反映することのできるインターフェースということです。
Components.interfaces
オブジェクトのプロパティは、nsID
nsID 型のパラメータを除いた XPCOM メソッドで利用されます。これには nsISupports::QueryInterface
、nsICID::getService
が受け取る追加パラメータ、nsICID::createInstance
(JavaScript から呼ばれた場合)、nsIClassInfo::getInterfaces
が含まれます。
Components.interfaces
オブジェクトのプロパティは for...in
ループを使って列挙できます。
使い方
インターフェースオブジェクトへのアクセス
Components.interfaces
オブジェクトのプロパティはインターフェース名で索引付けされます。インターフェースオブジェクトは以下のようにして取得できます。
var iface = Components.interfaces.nsISupportsArray;
この戻り値は nsISupportsArray
インターフェースのインターフェースオブジェクトです。
インターフェースで定義されたコンスタントへのアクセス
Interface descriptions (cf. XPIDL) may not only contain method declarations, but also constants. For example, assume we have the following interface declaration:
interface nsIFoo : nsISupports { const PRUint32 MYFLAG = 5; };
The constant MYFLAG
can then be accessed using
var myFlag = Components.interfaces.nsIFoo.MYFLAG;