aboutsummaryrefslogtreecommitdiff
path: root/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html
blob: 7d07c19b32365adfcc84562bbbcee085dd12fe49 (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
38
39
40
41
42
43
44
45
---
title: Components.utils.getWeakReference
slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference
tags:
  - XPCOM
  - 'XPCOM:Language Bindings'
  - XPConnect
translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference
---
<p>このメソッドは <a href="ja/Firefox_3">Firefox 3</a> で導入され、オブジェクトの弱い参照 (<span style="color: green;">weak reference</span>)を得るために使います。オブジェクトの参照を得るには、結果のオブジェクトに対して <code>get()</code> を実行する必要があります。</p>

<p>加えて、 <code>get()</code> が成功しても、オブジェクトが有効であるとは限りません。単にまだガベージコレクトされていないからかもしれないからです。オブジェクトが本当に欲しいものであるかを確認するには、 (DOM ノードの <a href="/ja/docs/Web/API/Node/parentNode" title="指定されたノードの DOM ツリー内の親ノードを返します。"><code>Node.parentNode()</code></a> のように) 他の角度からチェックする必要があります。</p>

<h3 id="文法">文法</h3>

<pre>weakRef = Components.utils.getWeakReference(<em>obj</em>);
</pre>

<h4 id="引数">引数</h4>

<dl>
 <dt><code>obj</code></dt>
 <dd>弱い参照を得ようとするオブジェクト。</dd>
</dl>

<div class="note">
<p><strong>注:</strong> <span title="(Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)">Gecko 11.0</span> では、 このメソッドは <code>obj</code><code>null</code> の場合に例外を投げるように変更されました。 <span title="(Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9)">Gecko 12.0</span> で、暗黙に失敗するという以前の動作に戻されました。</p>
</div>

<h3 id="例"></h3>

<p>こちらの例では、ウィンドウへの弱い参照を把握します。そして後から、配列の中から一致するものを探して使用します。</p>

<pre>var arr = [];

arr.push(Cu.getWeakReference(window));

// この部分は他のブロックで実行されます。
for (var i=0; i&lt;arr.length; i++) {
  if (arr[i].get() == window) {
    // ウィンドウが見つかった
    break;
  }
}
</pre>