<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en-US">DOM Standard</cite>
( (<time>2014-06-23 14:49:32 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://dom.spec.whatwg.org/#dom-nodeiterator-detach">https://dom.spec.whatwg.org/#dom-nodeiterator-detach</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite>ECMAScript® 2018 Language Specification</cite> (<time>2017-06-14 04:16:40 +09:00</time>) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tc39.github.io/ecma262/#sec-isdetachedbuffer">https://tc39.github.io/ecma262/#sec-isdetachedbuffer</anchor-external></li></ul></refs></section><section><h1>detach (<code>ArrayBuffer</code>)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
<code>ArrayBuffer</code> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">detach</anchor> されているかどうかを返す公開 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">API</anchor>
はありませんが、それを検査している <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">API</anchor> を呼び出すことで判断できます。
一番手軽そうなのは <code>ArrayBuffer</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>
の <code>byteLength</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メソッド</anchor>が <code>TypeError</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>るかどうかでしょう。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">取得器</anchor>を普通の方法で呼び出している限り、 <code>TypeError</code>
を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>るのは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">detach</anchor> されているときだけです。)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>内部では、
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" class="ss">ArrayBufferData</f> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部スロット</anchor>を持つ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>に対する操作として、
<dfn><code>IsDetachedBuffer</code></dfn> が定義されています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal></src>。
<code>ArrayBuffer</code> や <code>SharedArrayBuffer</code> が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">detach</anchor> されたかどうかを返します。
<var>配列バッファー</var>について、次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <var>配列バッファー</var>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" class="ss">ArrayBufferData</f> が <code>null</code> の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>を返します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> それ以外の場合、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>を返します。</li></ol></li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <code>ArrayBuffer</code>/<code>SharedArrayBuffer</code> に関するほとんどの操作
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>で定義されているものや<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構造化クローン</anchor>) から呼び出されます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">detach</anchor> されている場合には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>られることが多いです。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" class="ss">ArrayBufferData</f> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部スロット</anchor>と
<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" class="ss">ArrayBufferByteLength</f> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部スロット</anchor>を持つ
<code>SharedArrayBuffer</code> でない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>に対する操作として、
<dfn><code>DetachArrayBuffer</code></dfn> が定義されています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal></src>。
<code>ArrayBuffer</code> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">detach</anchor> します。
<var>配列バッファー</var>について、次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <var>配列バッファー</var>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" class="ss">ArrayBufferData</f> を、 <code>null</code> に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <var>配列バッファー</var>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" class="ss">ArrayBufferByteLength</f> を、 <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0</n> に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <code>null</code> を返します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構造化クローン</anchor>や <code>TransferArrayBuffer</code> から呼び出されます。</p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20140417</cite>
( (<time>2014-04-18 14:29:25 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://krijnhoetmer.nl/irc-logs/whatwg/20140417#l-575">http://krijnhoetmer.nl/irc-logs/whatwg/20140417#l-575</anchor-external></p></section></body></html>