diff --git a/index.bs b/index.bs index 042bc54a..a3a6d88e 100644 --- a/index.bs +++ b/index.bs @@ -11880,8 +11880,8 @@ in which case they are exposed on every object that [=implements=] the interface 1. Let |steps| be the following series of steps: 1. Try running the following steps: - 1. Let |idlObject| be null. - 1. If |target| is an [=interface=], and |attribute| is a [=regular attribute=]: + 1. If |target| is an [=interface=], and |attribute| is a [=regular attribute=], + let |R| initially be undefined and execute the following steps: 1. Let |esValue| be the this value, if it is not null or undefined, or |realm|'s [=Realm/global object=] otherwise. @@ -11897,10 +11897,18 @@ in which case they are exposed on every object that [=implements=] the interface 1. Otherwise, [=ECMAScript/throw=] a {{ECMAScript/TypeError}}. 1. If |attribute|'s type is an [=observable array type=], then return |esValue|'s [=backing observable array exotic object=] for |attribute|. - 1. Set |idlObject| to the IDL [=interface type=] value that represents a reference + 1. Let |idlObject| be the IDL [=interface type=] value that represents a reference to |esValue|. - 1. Let |R| be the result of running the [=getter steps=] of |attribute| with - |idlObject| as [=this=]. + 1. Set |R| to the result of running the [=getter steps=] of |attribute| with + |idlObject| as [=this=]. + + Otherwise, let |R| be the result of running the [=getter steps=] of |attribute| with + null as [=this=]. + + Note: [=Namespaces=] and [=interface=] objects (themselves, + rather than their instances) are not intended to carry state, + so their attribute getters intentionally do not get access to them. + 1. Return the result of [=converted to an ECMAScript value|converting=] |R| to an ECMAScript value of the type |attribute| is declared as.