PrimaryGlobal

拡張属性 [Global], [PrimaryGlobal] (Web IDL)

[37] Web IDL には拡張属性として Global、 PrimaryGlobal があり、インターフェイスに指定できます >>36。

仕様書

文脈

[55] これらの拡張属性を同時には指定できません >>36。

[56] PrimaryGlobal 拡張属性を指定できるのは、 いずれか1つのインターフェイスだけです >>36。 この拡張属性が指定されたものを一次大域インターフェイス (primary global interface) といいます >>36。

[1] 実用上、これは Window インターフェイスのことです。

[45] これらの拡張属性を部分インターフェイス定義に指定する場合は、 その部分インターフェイス定義で名前付き特性取得子も定義していなければなりません >>36。

[48] partial でない interface なら、名前付き特性が定義されていなくても構わないようです。

作用と制約

[38] これらの拡張属性が指定されたインターフェイスを実装するオブジェクトは、 ECMAScript環境で大域オブジェクトとして使うことができます >>36。

[46] これらの拡張属性が指定されたインターフェイスは、 同じ ECMAScript大域環境においてそれを実装するオブジェクトを複数持つことができません >>36。これは、名前付き特性がプロトタイプ鎖中に現れるため、 複数存在するとすべてのオブジェクトが同じ名前付き特性群を共有してしまうためです >>36。

[47] 複数の Window (WindowProxy) オブジェクトが同時に存在することがあるように、 同じインターフェイスを実装していながらも異なるECMAScript大域環境由来のオブジェクトなら複数存在することがあります。

[40] これらの拡張属性が指定されたインターフェイスを実装するオブジェクトでは、 当該インターフェイスや派生的インターフェイス群のインターフェイスメンバーは、 インターフェイスプロトタイプオブジェクトではなく、 オブジェクト自体に現れます >>36。

[52] これらの拡張属性が指定されたインターフェイスについては、 当該インターフェイスと派生的インターフェイス群にわたってインターフェイスメンバーの名前が衝突したり、 文字列化器、直列化器、反復器がそれぞれ複数あったりしてはなりません >>36。

[39] これらの拡張属性が指定されたインターフェイスを実装するオブジェクトでは、 名前付き特性は、そのオブジェクト自体ではなく、プロトタイプ鎖中にある名前付き特性オブジェクトに現れます >>36。

[41] これらの拡張属性が指定されたインターフェイスを実装するオブジェクトでは、 名前付き特性の設定子、作成子、削除子を定義してはなりません >>36。

[42] これらの拡張属性が指定されたインターフェイスには、 OverrideBuiltins 拡張属性を指定してはなりません >>36。また OverrideBuiltins 拡張属性が指定されたインターフェイスを継承してはなりません >>36。

[44] これらの拡張属性が指定されたインターフェイスを他のインターフェイスが継承することはできません >>36。

引数

[53] これらの拡張属性は、引数なしか、 識別子リストのいずれかでなければなりません >>36。

[70] 識別子1つだけの指定は認められていません。

[54] 識別子リストがあれば、それらの識別子が大域名となります。 なければ、インターフェイス名が大域名となります。 >>36

実例

[49] Window が PrimaryGlobal 拡張属性つきです。

[50] DedicatedWorker が Global=(Worker,DedicatedWorker) 拡張属性つきです。

[51] SharedWorker が Global=(Worker,SharedWorker) 拡張属性つきです。

[66] ServiceWorker が Global 拡張属性つきです。

歴史

[2] Remove [PrimaryGlobal] (annevk著, ) https://github.com/whatwg/html/commit/dff66be7bd3c2a6ce1a411f2e8c2a1ccac88fd92

[3] Remove [PrimaryGlobal] by annevk · Pull Request #2956 · whatwg/html () https://github.com/whatwg/html/pull/2956

[4] Make [Exposed] mandatory, remove [PrimaryGlobal] (#423) (tobie著, ) https://github.com/heycam/webidl/commit/d59937304702d033358b89fac5b5562c23b56096

[5] Investigate removing [PrimaryGlobal] and requiring [Exposed] · Issue #365 · heycam/webidl () https://github.com/heycam/webidl/issues/365

[6] Make [Exposed] mandatory, remove [PrimaryGlobal] by tobie · Pull Request #423 · heycam/webidl () https://github.com/heycam/webidl/pull/423