-
Notifications
You must be signed in to change notification settings - Fork 4
/
936.txt
78 lines (57 loc) · 5.42 KB
/
936.txt
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
[7] [[インターフェイス]]の[DFN[[RUBYB[[[派生的インターフェイス群]]]@en[consequential interfaces]]]]とは、
その[[インターフェイス]]を[[実装]]する[[オブジェクト]]が、その[[インターフェイス]]自体に関する
[CODE(IDL)@en[[[implements]]]] [[文]]によって[[実装]]することとなる[[インターフェイス]]の[[集合]]です。
;; [13] [RUBYB[派生(した)インターフェイス]@en[derived interface]]とは異なります。
* 仕様書
[REFS[
- [6] '''[CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#dfn-consequential-interfaces>'''
- [1] [CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#dfn-callback-interface>
- [3] [CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#dfn-iterator-object-interface>
- [16] [CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#idl-special-operations>
- [18] [CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#Global>
- [21] [CITE[Web IDL (Second Edition)]] ([TIME[2014-02-10 21:45:38 +09:00]] 版) <http://heycam.github.io/webidl/#Unforgeable>
]REFS]
* 定義
[8] ある[[インターフェイス]]の[[派生的インターフェイス群]]は、
- [9] その[[インターフェイス]]を[[左辺]]とする [CODE(IDL)@en[[[implements]]]] [[文]]の[[右辺]]にある[[インターフェイス]]
- [10] その[[インターフェイス]]の[[派生的インターフェイス]]の[[継承インターフェイス群]]
- [11] その[[インターフェイス]]の[[派生的インターフェイス]]を[[左辺]]とする
[CODE(IDL)@en[[[implements]]]] [[文]]の[[右辺]]にある[[インターフェイス]]
... によって構成されます [SRC[>>6]]。
;; [12] [[補助的インターフェイス]]と似ていますが、[[補助的インターフェイス]]には[[継承インターフェイス]]の
[CODE(IDL)@en[[[implements]]]] によって[[実装]]することとなる[[インターフェイス]]が含まれるのに対し、
こちらではそれらは含まれず、直接 [CODE(IDL)@en[[[implements]]]]
しているものに限定されています。
* 制限
[2] [[コールバックインターフェイス]]は、[[派生的インターフェイス群]]を持つことができません
[SRC[>>1]]。
;; [15] [[コールバックインターフェイス]]は [CODE(IDL)@en[[[implements]]]]
[[文]]に指定できません。
[14] [[インターフェイス]]とその[[派生的インターフェイス群]]を通して、
[[メンバー]]の名前が衝突してはなりません [SRC[>>6, >>18]]。
[17] [[オブジェクト]]が[[特殊演算]]を定義する[[インターフェイス]]を複数個[[実装]]する場合、
どれが呼び出されるかは[[未定義]]です [SRC[>>16]]。
[19] [CODE(IDL)@en[[[Global]]]] や [CODE(IDL)@en[[[PrimaryGlobal]]]] が指定された[[インターフェイス]]では、
[[インターフェイス]]とその[[派生的インターフェイス群]]を通じて、
[[文字列化器]]や[[直列化器]]はそれぞれ高々1回しか宣言できません [SRC[>>18]]。
[5] [[インターフェイス]]とその[[派生的インターフェイス群]]を通して、
[[反復器]] [SRC[>>3, >>18]] や[[反復器オブジェクト]] [SRC[>3]]
はそれぞれ高々1回しか宣言できません。
[4] [[反復器オブジェクトインターフェイス]]とその[[派生的インターフェイス群]]においては、
[CODE[[[next]]]] という名前の[[インターフェイスメンバー]]を持つことができません [SRC[>>3]]。
[20] [CODE(IDL)@en[[[MapClass]]]] [[インターフェイス]]とその[[派生的インターフェイス群]]においては、
[CODE[[[clear]]]], [CODE[[[delete]]]], [CODE[[[forEach]]]], [CODE[[[get]]]],
[CODE[[[has]]]], [CODE[[[set]]]] という名前の[[インターフェイスメンバー]]の利用に関する制約があり、
[CODE[[[size]]]], [CODE[[[entries]]]], [CODE[[[keys]]]], [CODE[[[values]]]]
という名前の[[インターフェイスメンバー]]を持つことができません。
[22] [[unforgeable]] な[[属性]]や[[演算]]が定義された[[インターフェイス]]が[[継承インターフェイス]]であるような[[インターフェイス]]とその[[派生的インターフェイス群]]においては、
その[[属性]]や[[演算]]と同じ名前の[[静的]]ではない[[属性]]や[[通常演算]]を持つことはできません
[SRC[>>21]]。
;; [23] [[定数]]はいいのでしょうか...
* JavaScript における扱い
[24] [[派生的インターフェイス群]]の[[メンバー]]は、[[JavaScript]]
においては元の[[インターフェイス]]の[[メンバー]]とマージされた状態で存在します。
前の章に示した各種の制限は、ここでの衝突を回避するためのものです。
[25] 通常はそれらは[[インターフェイスオブジェクト]]に現れ、対象となる[[オブジェクト]]の[[プロトタイプ]]として存在することで機能しますが、
[[unforgeable]] な場合や [CODE(IDL)@en[[[Global]]]]/[CODE(IDL)@en[[[PrimaryGlobal]]]]
な場合には、[[オブジェクト]]に直接現れます。