* 仕様書

[REFS[
- [1] [CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#es-interfaces>
- [8] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#windowproxy>
]REFS]

* 意味

[11] [[インターフェイスオブジェクト]]は、[[初期オブジェクト]]です。

* メンバー

[12] [[インターフェイスオブジェクト]]上には、[[IDL素片]]で定義された[[静的メソッド]]、
[[静的属性]]、[[定数]]が (あれば) [[特性]]として定義されます。

[13] [[インターフェイスオブジェクト]]の [CODE(JS)@en[[[property]]]]
[[特性]]の値は、[[プロトタイプオブジェクト]]となります。

[14] [[インターフェイス]]が[[コンストラクター]]を持つ場合は、
[[インターフェイスオブジェクト]]は [CODE[[[Call]]]] [[内部メソッド]]を持ちます。

[15] [[インターフェイスオブジェクト]]は、その属する[[大域オブジェクト]]への参照を持ちます。
この参照は[[コンストラクター]]が使いますし、[[静的メソッド]]の処理で参照されることもあります。

* 大域オブジェクト上の特性

[2] 次の条件を満たすものは、[[大域オブジェクト]]上に対応する[[特性]]が作られます [SRC[>>1]]。
[FIG(list)[
- [3] [[インターフェイス]]である
- [4] 当該[[ECMAScript大域環境]]に[[晒される]]状態にある
- いずれか:
-- [5] [[コールバックインターフェイス]]であり、[[定数]]を持つ
-- [6] [[コールバックインターフェイス]]ではなく、 [CODE(IDL)@en[[[NoInterfaceObject]]]] 
[[拡張属性]]を持たない
]FIG]

[7] この[[特性]]は、[[インターフェイス]]の[[識別子]]が[[名前]]であり、
[[インターフェイスオブジェクト]]と呼ばれる[[オブジェクト]]が値です [SRC[>>1]]。

* [CODE(IDL)@en[NoInterfaceObject]] 拡張属性

[9] [CODE(DOMi)@en[[[WindowProxy]]]] には[[インターフェイスオブジェクト]]がありません [SRC[>>8]]。

* 歴史

[REFS[
- [10] [CITE@en[Merge pull request #38 from bzbarsky/deal-with-nointerfaceobject · heycam/webidl@84bfd63]] ([TIME[2015-06-01 16:42:51 +09:00]] 版) <https://github.com/heycam/webidl/commit/84bfd63ffcb8fdd8acc6fe12f093199c401d6dd8>
]REFS]

[16] [CITE@en[Revamp interface bindings (#313)]]
([[tobie]]著, [TIME[2017-02-21 07:17:07 +09:00]])
<https://github.com/heycam/webidl/commit/4a8f57e276369db7ea5fb09974a09b0ca5d276dd>

[17] [CITE@en[Revamp interface bindings (#313)]]
([[tobie]]著, [TIME[2017-02-21 07:17:07 +09:00]])
<https://github.com/heycam/webidl/commit/4a8f57e276369db7ea5fb09974a09b0ca5d276dd>

[18] [CITE@en[Use interface mixins in IDL]]
([[romandev]]著, [TIME[2017-12-19 19:22:26 +09:00]])
<https://github.com/whatwg/dom/commit/12b069802b771c145fd3b1917c5b82f2a8c1ff9f>

[19] [CITE@en[Update WebIDL definition(s) to use new mixin syntax · Issue #532 · whatwg/dom]]
([TIME[2017-12-20 23:50:25 +09:00]])
<https://github.com/whatwg/dom/issues/532>

[20] [CITE@en[Use Web IDL's new-ish interface mixins concept]]
([[romandev]]著, [TIME[2017-12-21 05:39:18 +09:00]])
<https://github.com/whatwg/html/commit/c8867a179c21134021dc3435e98c1b9c4542d794>

[21] [CITE@en[Add support for interface mixins]]
([[tobie]]著, [TIME[2017-10-11 16:48:12 +09:00]])
<https://github.com/heycam/webidl/commit/45e8173d40ddff8dcf81697326e094bcf8b92920>

[22] [CITE@en[The spec's wording for where to place operations is broken and confusing · Issue #164 · heycam/webidl]]
([TIME[2017-12-23 15:32:06 +09:00]])
<https://github.com/heycam/webidl/issues/164>

[23] [CITE@en[26452 – Introduce an explicit syntax for mixins]]
([TIME[2017-12-23 15:32:43 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26452>

[24] [CITE@en[Add mixins by tobie · Pull Request #433 · heycam/webidl]]
([TIME[2017-12-23 15:35:33 +09:00]])
<https://github.com/heycam/webidl/pull/433>

[25] [CITE@en[Designing mixins · Issue #363 · heycam/webidl]]
([TIME[2017-12-23 15:50:03 +09:00]])
<https://github.com/heycam/webidl/issues/363>

[26] [CITE@en[Use interface mixins instead of '''['''NoInterfaceObject''']''']]
([[romandev]]著, [TIME[2017-12-23 21:08:31 +09:00]])
<https://github.com/whatwg/storage/commit/37030a22b727d3039d333334a0124cf21b96314b>

[27] [CITE@en[Update WebIDL definition(s) to use new mixin syntax · Issue #53 · whatwg/storage]]
([TIME[2017-12-24 12:40:11 +09:00]])
<https://github.com/whatwg/storage/issues/53>

[28] [CITE@en[Use `interface mixins` instead of `'''['''NoInterfaceObject''']'''` by romandev · Pull Request #54 · whatwg/storage]]
([TIME[2017-12-24 12:41:05 +09:00]])
<https://github.com/whatwg/storage/pull/54>

[29] [CITE@en[Use interface mixins instead of '''['''NoInterfaceObject''']''']]
([[romandev]]著, [TIME[2017-12-23 21:11:50 +09:00]])
<https://github.com/whatwg/fetch/commit/7e617beaedf731e2904b14919b5c0270a73b75dc>

[30] [CITE@en[Update WebIDL definition(s) to use new mixin syntax · Issue #624 · whatwg/fetch]]
([TIME[2017-12-24 12:44:16 +09:00]])
<https://github.com/whatwg/fetch/issues/624>

[31] [CITE@en[Use `interface mixins` instead of `'''['''NoInterfaceObject''']'''` by romandev · Pull Request #645 · whatwg/fetch]]
([TIME[2017-12-24 12:46:14 +09:00]])
<https://github.com/whatwg/fetch/pull/645>

[32] [CITE@en[Editorial: add DOMRectList to the legacy '''['''NoInterfaceObject''']''' list (#502)]]
([[tobie]]著, [TIME[2017-12-29 08:51:07 +09:00]])
<https://github.com/heycam/webidl/commit/884623d04817f55a2aba3dc2cc5e9d7362c8f442>

[33] [CITE@en[Editorial: add DOMRectList to the legacy '''['''NoInterfaceObject''']''' list by tobie · Pull Request #502 · heycam/webidl]]
([TIME[2017-12-29 15:32:25 +09:00]])
<https://github.com/heycam/webidl/pull/502>

[34] [CITE@en[Update WebIDL definition(s) to use new mixin syntax · Issue #233 · w3c/fxtf-drafts]]
([TIME[2017-12-29 15:32:38 +09:00]])
<https://github.com/w3c/fxtf-drafts/issues/233>

[35] [CITE@en[Editorial: Revert #502. (#503)]]
([[tobie]]著, [TIME[2017-12-29 22:24:30 +09:00]])
<https://github.com/heycam/webidl/commit/f6d726eee9d3c98915c0ee788f69a551568fab8b>

[36] [CITE@en[Use Web IDL's new-ish interface mixins concept by romandev · Pull Request #2566 · KhronosGroup/WebGL]]
([TIME[2018-01-07 13:22:47 +09:00]])
<https://github.com/KhronosGroup/WebGL/pull/2566>

[37] [CITE@en[Make interface object and interface prototype object creation imperative]]
([[tobie]]著, [TIME[2017-12-11 06:57:03 +09:00]])
<https://github.com/heycam/webidl/commit/5224b16d5e97586a93e77994955bc230596a2839>

[38] [CITE@en[Make interface prototype object creation imperative by tobie · Pull Request #494 · heycam/webidl]]
([TIME[2018-04-11 12:19:47 +09:00]])
<https://github.com/heycam/webidl/pull/494>

[39] [CITE@en[Editorial: add DOMRectList to the legacy '''['''NoInterfaceObject''']''' list (#502)]]
([[tobie]]著, [TIME[2017-12-29 08:51:07 +09:00]])
<https://github.com/heycam/webidl/commit/884623d04817f55a2aba3dc2cc5e9d7362c8f442>

[40] [CITE@en[Editorial: add DOMRectList to the legacy '''['''NoInterfaceObject''']''' list by tobie · Pull Request #502 · heycam/webidl]]
([TIME[2018-05-05 11:51:41 +09:00]])
<https://github.com/heycam/webidl/pull/502>

[41] [CITE@en[Editorial: add DOMRectList to the legacy '''['''NoInterfaceObject''']''' list by tobie · Pull Request #502 · heycam/webidl]]
([TIME[2018-05-05 11:51:48 +09:00]])
<https://github.com/heycam/webidl/pull/502>

[42] [CITE@en[Update WebIDL definition(s) to use new mixin syntax · Issue #233 · w3c/fxtf-drafts]]
([TIME[2018-05-05 11:51:52 +09:00]])
<https://github.com/w3c/fxtf-drafts/issues/233>

[43] [CITE@en[Editorial: Revert #502. (#503)]]
([[tobie]]著, [TIME[2017-12-29 22:24:30 +09:00]])
<https://github.com/heycam/webidl/commit/f6d726eee9d3c98915c0ee788f69a551568fab8b>

[44] [CITE@en[Editorial: Revert "add DOMRectList to the legacy '''['''NoInterfaceObject''']''' list" by tobie · Pull Request #503 · heycam/webidl]]
([TIME[2018-05-05 11:53:30 +09:00]])
<https://github.com/heycam/webidl/pull/503>

[45] [CITE@en[Use Web IDL's new-ish interface mixins concept]]
([[romandev]]著, [TIME[2017-12-21 15:56:40 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/91aca9328fc7e873be721ac06559ff1b5761d6e3>

[46] [CITE@en[Stop using extended attributes for constructors]]
([[Ms2ger]]著, [TIME[2019-03-26 23:26:37 +09:00]])
<https://github.com/heycam/webidl/commit/91ca6ebb4d4fca9703309e19256bbc5f5dd77e3c>