blob: 8105f7f239825a7cc0d516a7737864cf5f5d84df (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
---
title: Components.interfaces
slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.interfaces
tags:
- 'XPCOM:Language Bindings'
- XPConnect
translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.interfaces
---
<p>
</p><p><code>Components.interfaces</code> は、プロパティがそれらの名前によって索引付けされたクラスである、読み出し専用オブジェクトです。
</p>
<h2 id="はじめに"> はじめに </h2>
<p><code>Components.interfaces</code> は、<a href="ja/NsIJSCID">nsIJSCID</a> インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、いくつかのコンポーネントが実装している (あるいは未実装の可能性もあります) <a href="ja/XPCOM">XPCOM</a> インターフェースのひとつを表します。
</p><p><br>
対応する <code>.idl</code> の宣言が <code>[scriptable]</code> として設計されたインターフェースのみを反映します。つまり、<a href="ja/XPConnect">XPConnect</a> が JavaScript へ反映することのできるインターフェースということです。
</p><p><code>Components.interfaces</code> オブジェクトのプロパティは、<code>nsID</code> nsID 型のパラメータを除いた XPCOM メソッドで利用されます。これには <code><a href="ja/NsISupports">nsISupports</a>::<a href="ja/NsISupports/QueryInterface">QueryInterface</a></code>、<code>nsICID::getService</code> が受け取る追加パラメータ、<code>nsICID::createInstance</code> (JavaScript から呼ばれた場合)、<code><a href="ja/NsIClassInfo">nsIClassInfo</a>::<a href="ja/NsIClassInfo/getInterfaces">getInterfaces</a></code> が含まれます。
</p><p><code>Components.interfaces</code> オブジェクトのプロパティは <code><a href="ja/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a></code> ループを使って列挙できます。
</p>
<h2 id="使い方"> 使い方 </h2>
<h3 id="インターフェースオブジェクトへのアクセス"> インターフェースオブジェクトへのアクセス </h3>
<p><code>Components.interfaces</code> オブジェクトのプロパティはインターフェース名で索引付けされます。インターフェースオブジェクトは以下のようにして取得できます。
</p>
<pre class="eval">var iface = Components.interfaces.nsISupportsArray;
</pre>
<p>この戻り値は <code>nsISupportsArray</code> インターフェースのインターフェースオブジェクトです。
</p>
<h3 id="インターフェースで定義されたコンスタントへのアクセス"> インターフェースで定義されたコンスタントへのアクセス </h3>
<p>Interface descriptions (cf. <a href="ja/XPIDL">XPIDL</a>) may not only contain method declarations, but also constants. For example, assume we have the following interface declaration:
</p>
<pre class="eval">interface nsIFoo : nsISupports {
const PRUint32 MYFLAG = 5;
};
</pre>
<p>The constant <code>MYFLAG</code> can then be accessed using
</p>
<pre class="eval">var myFlag = Components.interfaces.nsIFoo.MYFLAG;
</pre>
|