diff --git a/spec.html b/spec.html index 3f1f909e359..2accf00f198 100644 --- a/spec.html +++ b/spec.html @@ -7684,7 +7684,7 @@

Ordinary Object Internal Methods and Internal Slots

[[GetPrototypeOf]] ( )

-

When the [[GetPrototypeOf]] internal method of _O_ is called, the following steps are taken:

+

The [[GetPrototypeOf]] internal method of an ordinary object _O_ takes no arguments. It performs the following steps when called:

1. Return ! OrdinaryGetPrototypeOf(_O_). @@ -7700,7 +7700,7 @@

OrdinaryGetPrototypeOf ( _O_ )

[[SetPrototypeOf]] ( _V_ )

-

When the [[SetPrototypeOf]] internal method of _O_ is called with argument _V_, the following steps are taken:

+

The [[SetPrototypeOf]] internal method of an ordinary object _O_ takes argument _V_ (an Object or *null*). It performs the following steps when called:

1. Return ! OrdinarySetPrototypeOf(_O_, _V_). @@ -7733,7 +7733,7 @@

OrdinarySetPrototypeOf ( _O_, _V_ )

[[IsExtensible]] ( )

-

When the [[IsExtensible]] internal method of _O_ is called, the following steps are taken:

+

The [[IsExtensible]] internal method of an ordinary object _O_ takes no arguments. It performs the following steps when called:

1. Return ! OrdinaryIsExtensible(_O_). @@ -7749,7 +7749,7 @@

OrdinaryIsExtensible ( _O_ )

[[PreventExtensions]] ( )

-

When the [[PreventExtensions]] internal method of _O_ is called, the following steps are taken:

+

The [[PreventExtensions]] internal method of an ordinary object _O_ takes no arguments. It performs the following steps when called:

1. Return ! OrdinaryPreventExtensions(_O_). @@ -7766,7 +7766,7 @@

OrdinaryPreventExtensions ( _O_ )

[[GetOwnProperty]] ( _P_ )

-

When the [[GetOwnProperty]] internal method of _O_ is called with property key _P_, the following steps are taken:

+

The [[GetOwnProperty]] internal method of an ordinary object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Return ! OrdinaryGetOwnProperty(_O_, _P_). @@ -7795,7 +7795,7 @@

OrdinaryGetOwnProperty ( _O_, _P_ )

[[DefineOwnProperty]] ( _P_, _Desc_ )

-

When the [[DefineOwnProperty]] internal method of _O_ is called with property key _P_ and Property Descriptor _Desc_, the following steps are taken:

+

The [[DefineOwnProperty]] internal method of an ordinary object _O_ takes arguments _P_ (a property key) and _Desc_ (a Property Descriptor). It performs the following steps when called:

1. Return ? OrdinaryDefineOwnProperty(_O_, _P_, _Desc_). @@ -7867,7 +7867,7 @@

ValidateAndApplyPropertyDescriptor ( _O_, _P_, _extensible_, _Desc_, _curren

[[HasProperty]] ( _P_ )

-

When the [[HasProperty]] internal method of _O_ is called with property key _P_, the following steps are taken:

+

The [[HasProperty]] internal method of an ordinary object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Return ? OrdinaryHasProperty(_O_, _P_). @@ -7889,7 +7889,7 @@

OrdinaryHasProperty ( _O_, _P_ )

[[Get]] ( _P_, _Receiver_ )

-

When the [[Get]] internal method of _O_ is called with property key _P_ and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Get]] internal method of an ordinary object _O_ takes arguments _P_ (a property key) and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Return ? OrdinaryGet(_O_, _P_, _Receiver_). @@ -7917,7 +7917,7 @@

OrdinaryGet ( _O_, _P_, _Receiver_ )

[[Set]] ( _P_, _V_, _Receiver_ )

-

When the [[Set]] internal method of _O_ is called with property key _P_, value _V_, and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Set]] internal method of an ordinary object _O_ takes arguments _P_ (a property key), _V_ (an ECMAScript language value), and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Return ? OrdinarySet(_O_, _P_, _V_, _Receiver_). @@ -7968,7 +7968,7 @@

OrdinarySetWithOwnDescriptor ( _O_, _P_, _V_, _Receiver_, _ownDesc_ )

[[Delete]] ( _P_ )

-

When the [[Delete]] internal method of _O_ is called with property key _P_, the following steps are taken:

+

The [[Delete]] internal method of an ordinary object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Return ? OrdinaryDelete(_O_, _P_). @@ -7990,7 +7990,7 @@

OrdinaryDelete ( _O_, _P_ )

[[OwnPropertyKeys]] ( )

-

When the [[OwnPropertyKeys]] internal method of _O_ is called, the following steps are taken:

+

The [[OwnPropertyKeys]] internal method of an ordinary object _O_ takes no arguments. It performs the following steps when called:

1. Return ! OrdinaryOwnPropertyKeys(_O_). @@ -8211,7 +8211,7 @@

ECMAScript Function Objects

[[Call]] ( _thisArgument_, _argumentsList_ )

-

The [[Call]] internal method for an ECMAScript function object _F_ is called with parameters _thisArgument_ and _argumentsList_, a List of ECMAScript language values. The following steps are taken:

+

The [[Call]] internal method of an ECMAScript function object _F_ takes arguments _thisArgument_ (an ECMAScript language value) and _argumentsList_ (a List of ECMAScript language values). It performs the following steps when called:

1. Assert: _F_ is an ECMAScript function object. 1. If _F_.[[IsClassConstructor]] is *true*, throw a *TypeError* exception. @@ -8284,7 +8284,7 @@

OrdinaryCallEvaluateBody ( _F_, _argumentsList_ )

[[Construct]] ( _argumentsList_, _newTarget_ )

-

The [[Construct]] internal method for an ECMAScript function object _F_ is called with parameters _argumentsList_ and _newTarget_. _argumentsList_ is a possibly empty List of ECMAScript language values. The following steps are taken:

+

The [[Construct]] internal method of an ECMAScript function object _F_ takes arguments _argumentsList_ (a List of ECMAScript language values) and _newTarget_ (a constructor). It performs the following steps when called:

1. Assert: _F_ is an ECMAScript function object. 1. Assert: Type(_newTarget_) is Object. @@ -8568,7 +8568,7 @@

Built-in Function Objects

[[Call]] ( _thisArgument_, _argumentsList_ )

-

The [[Call]] internal method for a built-in function object _F_ is called with parameters _thisArgument_ and _argumentsList_, a List of ECMAScript language values. The following steps are taken:

+

The [[Call]] internal method of a built-in function object _F_ takes arguments _thisArgument_ (an ECMAScript language value) and _argumentsList_ (a List of ECMAScript language values). It performs the following steps when called:

1. Let _callerContext_ be the running execution context. 1. If _callerContext_ is not already suspended, suspend _callerContext_. @@ -8590,7 +8590,7 @@

[[Call]] ( _thisArgument_, _argumentsList_ )

[[Construct]] ( _argumentsList_, _newTarget_ )

-

The [[Construct]] internal method for built-in function object _F_ is called with parameters _argumentsList_ and _newTarget_. The steps performed are the same as [[Call]] (see ) except that step is replaced by:

+

The [[Construct]] internal method of a built-in function object _F_ takes arguments _argumentsList_ (a List of ECMAScript language values) and _newTarget_ (a constructor). The steps performed are the same as [[Call]] (see ) except that step is replaced by:

1. Let _result_ be the Completion Record that is the result of evaluating _F_ in a manner that conforms to the specification of _F_. The *this* value is uninitialized, _argumentsList_ provides the named parameters, and _newTarget_ provides the NewTarget value. @@ -8679,7 +8679,7 @@

Bound Function Exotic Objects

[[Call]] ( _thisArgument_, _argumentsList_ )

-

When the [[Call]] internal method of a bound function exotic object, _F_, which was created using the bind function is called with parameters _thisArgument_ and _argumentsList_, a List of ECMAScript language values, the following steps are taken:

+

The [[Call]] internal method of a bound function exotic object _F_ takes arguments _thisArgument_ (an ECMAScript language value) and _argumentsList_ (a List of ECMAScript language values). It performs the following steps when called:

1. Let _target_ be _F_.[[BoundTargetFunction]]. 1. Let _boundThis_ be _F_.[[BoundThis]]. @@ -8691,7 +8691,7 @@

[[Call]] ( _thisArgument_, _argumentsList_ )

[[Construct]] ( _argumentsList_, _newTarget_ )

-

When the [[Construct]] internal method of a bound function exotic object, _F_ that was created using the bind function is called with a list of arguments _argumentsList_ and _newTarget_, the following steps are taken:

+

The [[Construct]] internal method of a bound function exotic object _F_ takes arguments _argumentsList_ (a List of ECMAScript language values) and _newTarget_ (a constructor). It performs the following steps when called:

1. Let _target_ be _F_.[[BoundTargetFunction]]. 1. Assert: IsConstructor(_target_) is *true*. @@ -8733,7 +8733,7 @@

Array Exotic Objects

[[DefineOwnProperty]] ( _P_, _Desc_ )

-

When the [[DefineOwnProperty]] internal method of an Array exotic object _A_ is called with property key _P_, and Property Descriptor _Desc_, the following steps are taken:

+

The [[DefineOwnProperty]] internal method of an Array exotic object _A_ takes arguments _P_ (a property key) and _Desc_ (a Property Descriptor). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. If _P_ is *"length"*, then @@ -8848,7 +8848,7 @@

String Exotic Objects

[[GetOwnProperty]] ( _P_ )

-

When the [[GetOwnProperty]] internal method of a String exotic object _S_ is called with property key _P_, the following steps are taken:

+

The [[GetOwnProperty]] internal method of a String exotic object _S_ takes argument _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _desc_ be OrdinaryGetOwnProperty(_S_, _P_). @@ -8859,7 +8859,7 @@

[[GetOwnProperty]] ( _P_ )

[[DefineOwnProperty]] ( _P_, _Desc_ )

-

When the [[DefineOwnProperty]] internal method of a String exotic object _S_ is called with property key _P_, and Property Descriptor _Desc_, the following steps are taken:

+

The [[DefineOwnProperty]] internal method of a String exotic object _S_ takes arguments _P_ (a property key) and _Desc_ (a Property Descriptor). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _stringDesc_ be ! StringGetOwnProperty(_S_, _P_). @@ -8872,7 +8872,7 @@

[[DefineOwnProperty]] ( _P_, _Desc_ )

[[OwnPropertyKeys]] ( )

-

When the [[OwnPropertyKeys]] internal method of a String exotic object _O_ is called, the following steps are taken:

+

The [[OwnPropertyKeys]] internal method of a String exotic object _O_ takes no arguments. It performs the following steps when called:

1. Let _keys_ be a new empty List. 1. Let _str_ be _O_.[[StringData]]. @@ -8955,9 +8955,8 @@

Arguments Exotic Objects

[[GetOwnProperty]] ( _P_ )

-

The [[GetOwnProperty]] internal method of an arguments exotic object when called with a property key _P_ performs the following steps:

+

The [[GetOwnProperty]] internal method of an arguments exotic object _args_ takes argument _P_ (a property key). It performs the following steps when called:

- 1. Let _args_ be the arguments object. 1. Let _desc_ be OrdinaryGetOwnProperty(_args_, _P_). 1. If _desc_ is *undefined*, return _desc_. 1. Let _map_ be _args_.[[ParameterMap]]. @@ -8970,9 +8969,8 @@

[[GetOwnProperty]] ( _P_ )

[[DefineOwnProperty]] ( _P_, _Desc_ )

-

The [[DefineOwnProperty]] internal method of an arguments exotic object when called with a property key _P_ and Property Descriptor _Desc_ performs the following steps:

+

The [[DefineOwnProperty]] internal method of an arguments exotic object _args_ takes arguments _P_ (a property key) and _Desc_ (a Property Descriptor). It performs the following steps when called:

- 1. Let _args_ be the arguments object. 1. Let _map_ be _args_.[[ParameterMap]]. 1. Let _isMapped_ be HasOwnProperty(_map_, _P_). 1. Let _newArgDesc_ be _Desc_. @@ -8997,9 +8995,8 @@

[[DefineOwnProperty]] ( _P_, _Desc_ )

[[Get]] ( _P_, _Receiver_ )

-

The [[Get]] internal method of an arguments exotic object when called with a property key _P_ and ECMAScript language value _Receiver_ performs the following steps:

+

The [[Get]] internal method of an arguments exotic object _args_ takes arguments _P_ (a property key) and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

- 1. Let _args_ be the arguments object. 1. Let _map_ be _args_.[[ParameterMap]]. 1. Let _isMapped_ be ! HasOwnProperty(_map_, _P_). 1. If _isMapped_ is *false*, then @@ -9012,9 +9009,8 @@

[[Get]] ( _P_, _Receiver_ )

[[Set]] ( _P_, _V_, _Receiver_ )

-

The [[Set]] internal method of an arguments exotic object when called with property key _P_, value _V_, and ECMAScript language value _Receiver_ performs the following steps:

+

The [[Set]] internal method of an arguments exotic object _args_ takes arguments _P_ (a property key), _V_ (an ECMAScript language value), and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

- 1. Let _args_ be the arguments object. 1. If SameValue(_args_, _Receiver_) is *false*, then 1. Let _isMapped_ be *false*. 1. Else, @@ -9029,9 +9025,8 @@

[[Set]] ( _P_, _V_, _Receiver_ )

[[Delete]] ( _P_ )

-

The [[Delete]] internal method of an arguments exotic object when called with a property key _P_ performs the following steps:

+

The [[Delete]] internal method of an arguments exotic object _args_ takes argument _P_ (a property key). It performs the following steps when called:

- 1. Let _args_ be the arguments object. 1. Let _map_ be _args_.[[ParameterMap]]. 1. Let _isMapped_ be ! HasOwnProperty(_map_, _P_). 1. Let _result_ be ? OrdinaryDelete(_args_, _P_). @@ -9153,7 +9148,7 @@

Integer-Indexed Exotic Objects

[[GetOwnProperty]] ( _P_ )

-

When the [[GetOwnProperty]] internal method of an Integer-Indexed exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[GetOwnProperty]] internal method of an Integer-Indexed exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Assert: _O_ is an Integer-Indexed exotic object. @@ -9169,7 +9164,7 @@

[[GetOwnProperty]] ( _P_ )

[[HasProperty]] ( _P_ )

-

When the [[HasProperty]] internal method of an Integer-Indexed exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[HasProperty]] internal method of an Integer-Indexed exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Assert: _O_ is an Integer-Indexed exotic object. @@ -9182,7 +9177,7 @@

[[HasProperty]] ( _P_ )

[[DefineOwnProperty]] ( _P_, _Desc_ )

-

When the [[DefineOwnProperty]] internal method of an Integer-Indexed exotic object _O_ is called with property key _P_, and Property Descriptor _Desc_, the following steps are taken:

+

The [[DefineOwnProperty]] internal method of an Integer-Indexed exotic object _O_ takes arguments _P_ (a property key) and _Desc_ (a Property Descriptor). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Assert: _O_ is an Integer-Indexed exotic object. @@ -9204,7 +9199,7 @@

[[DefineOwnProperty]] ( _P_, _Desc_ )

[[Get]] ( _P_, _Receiver_ )

-

When the [[Get]] internal method of an Integer-Indexed exotic object _O_ is called with property key _P_ and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Get]] internal method of an Integer-Indexed exotic object _O_ takes arguments _P_ (a property key) and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. If Type(_P_) is String, then @@ -9217,7 +9212,7 @@

[[Get]] ( _P_, _Receiver_ )

[[Set]] ( _P_, _V_, _Receiver_ )

-

When the [[Set]] internal method of an Integer-Indexed exotic object _O_ is called with property key _P_, value _V_, and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Set]] internal method of an Integer-Indexed exotic object _O_ takes arguments _P_ (a property key), _V_ (an ECMAScript language value), and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. If Type(_P_) is String, then @@ -9230,7 +9225,7 @@

[[Set]] ( _P_, _V_, _Receiver_ )

[[Delete]] ( _P_ )

-

When the [[Delete]] internal method of an Integer-Indexed exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[Delete]] internal method of an Integer-Indexed exotic object _O_ takes arguments _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Assert: _O_ is an Integer-Indexed exotic object. @@ -9244,7 +9239,7 @@

[[Delete]] ( _P_ )

[[OwnPropertyKeys]] ( )

-

When the [[OwnPropertyKeys]] internal method of an Integer-Indexed exotic object _O_ is called, the following steps are taken:

+

The [[OwnPropertyKeys]] internal method of an Integer-Indexed exotic object _O_ takes no arguments. It performs the following steps when called:

1. Let _keys_ be a new empty List. 1. Assert: _O_ is an Integer-Indexed exotic object. @@ -9383,7 +9378,7 @@

Module Namespace Exotic Objects

[[SetPrototypeOf]] ( _V_ )

-

When the [[SetPrototypeOf]] internal method of a module namespace exotic object _O_ is called with argument _V_, the following steps are taken:

+

The [[SetPrototypeOf]] internal method of a module namespace exotic object _O_ takes argument _V_ (an Object or *null*). It performs the following steps when called:

1. Return ? SetImmutablePrototype(_O_, _V_). @@ -9391,7 +9386,7 @@

[[SetPrototypeOf]] ( _V_ )

[[IsExtensible]] ( )

-

When the [[IsExtensible]] internal method of a module namespace exotic object _O_ is called, the following steps are taken:

+

The [[IsExtensible]] internal method of a module namespace exotic object takes no arguments. It performs the following steps when called:

1. Return *false*. @@ -9399,7 +9394,7 @@

[[IsExtensible]] ( )

[[PreventExtensions]] ( )

-

When the [[PreventExtensions]] internal method of a module namespace exotic object _O_ is called, the following steps are taken:

+

The [[PreventExtensions]] internal method of a module namespace exotic object takes no arguments. It performs the following steps when called:

1. Return *true*. @@ -9407,7 +9402,7 @@

[[PreventExtensions]] ( )

[[GetOwnProperty]] ( _P_ )

-

When the [[GetOwnProperty]] internal method of a module namespace exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[GetOwnProperty]] internal method of a module namespace exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. If Type(_P_) is Symbol, return OrdinaryGetOwnProperty(_O_, _P_). 1. Let _exports_ be _O_.[[Exports]]. @@ -9419,7 +9414,7 @@

[[GetOwnProperty]] ( _P_ )

[[DefineOwnProperty]] ( _P_, _Desc_ )

-

When the [[DefineOwnProperty]] internal method of a module namespace exotic object _O_ is called with property key _P_ and Property Descriptor _Desc_, the following steps are taken:

+

The [[DefineOwnProperty]] internal method of a module namespace exotic object _O_ takes arguments _P_ (a property key) and _Desc_ (a Property Descriptor). It performs the following steps when called:

1. If Type(_P_) is Symbol, return OrdinaryDefineOwnProperty(_O_, _P_, _Desc_). 1. Let _current_ be ? _O_.[[GetOwnProperty]](_P_). @@ -9435,7 +9430,7 @@

[[DefineOwnProperty]] ( _P_, _Desc_ )

[[HasProperty]] ( _P_ )

-

When the [[HasProperty]] internal method of a module namespace exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[HasProperty]] internal method of a module namespace exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. If Type(_P_) is Symbol, return OrdinaryHasProperty(_O_, _P_). 1. Let _exports_ be _O_.[[Exports]]. @@ -9446,7 +9441,7 @@

[[HasProperty]] ( _P_ )

[[Get]] ( _P_, _Receiver_ )

-

When the [[Get]] internal method of a module namespace exotic object _O_ is called with property key _P_ and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Get]] internal method of a module namespace exotic object _O_ takes arguments _P_ (a property key) and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. If Type(_P_) is Symbol, then @@ -9471,7 +9466,7 @@

[[Get]] ( _P_, _Receiver_ )

[[Set]] ( _P_, _V_, _Receiver_ )

-

When the [[Set]] internal method of a module namespace exotic object _O_ is called with property key _P_, value _V_, and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Set]] internal method of a module namespace exotic object takes arguments _P_ (a property key), _V_ (an ECMAScript language value), and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Return *false*. @@ -9479,7 +9474,7 @@

[[Set]] ( _P_, _V_, _Receiver_ )

[[Delete]] ( _P_ )

-

When the [[Delete]] internal method of a module namespace exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[Delete]] internal method of a module namespace exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. If Type(_P_) is Symbol, then @@ -9492,7 +9487,7 @@

[[Delete]] ( _P_ )

[[OwnPropertyKeys]] ( )

-

When the [[OwnPropertyKeys]] internal method of a module namespace exotic object _O_ is called, the following steps are taken:

+

The [[OwnPropertyKeys]] internal method of a module namespace exotic object _O_ takes no arguments. It performs the following steps when called:

1. Let _exports_ be a copy of _O_.[[Exports]]. 1. Let _symbolKeys_ be ! OrdinaryOwnPropertyKeys(_O_). @@ -9534,7 +9529,7 @@

Immutable Prototype Exotic Objects

[[SetPrototypeOf]] ( _V_ )

-

When the [[SetPrototypeOf]] internal method of an immutable prototype exotic object _O_ is called with argument _V_, the following steps are taken:

+

The [[SetPrototypeOf]] internal method of an immutable prototype exotic object _O_ takes argument _V_ (an Object or *null*). It performs the following steps when called:

1. Return ? SetImmutablePrototype(_O_, _V_). @@ -9684,7 +9679,7 @@

Proxy Object Internal Methods and Internal Slots

[[GetPrototypeOf]] ( )

-

When the [[GetPrototypeOf]] internal method of a Proxy exotic object _O_ is called, the following steps are taken:

+

The [[GetPrototypeOf]] internal method of a Proxy exotic object _O_ takes no arguments. It performs the following steps when called:

1. Let _handler_ be _O_.[[ProxyHandler]]. 1. If _handler_ is *null*, throw a *TypeError* exception. @@ -9716,7 +9711,7 @@

[[GetPrototypeOf]] ( )

[[SetPrototypeOf]] ( _V_ )

-

When the [[SetPrototypeOf]] internal method of a Proxy exotic object _O_ is called with argument _V_, the following steps are taken:

+

The [[SetPrototypeOf]] internal method of a Proxy exotic object _O_ takes argument _V_ (an Object or *null*). It performs the following steps when called:

1. Assert: Either Type(_V_) is Object or Type(_V_) is Null. 1. Let _handler_ be _O_.[[ProxyHandler]]. @@ -9749,7 +9744,7 @@

[[SetPrototypeOf]] ( _V_ )

[[IsExtensible]] ( )

-

When the [[IsExtensible]] internal method of a Proxy exotic object _O_ is called, the following steps are taken:

+

The [[IsExtensible]] internal method of a Proxy exotic object _O_ takes no arguments. It performs the following steps when called:

1. Let _handler_ be _O_.[[ProxyHandler]]. 1. If _handler_ is *null*, throw a *TypeError* exception. @@ -9778,7 +9773,7 @@

[[IsExtensible]] ( )

[[PreventExtensions]] ( )

-

When the [[PreventExtensions]] internal method of a Proxy exotic object _O_ is called, the following steps are taken:

+

The [[PreventExtensions]] internal method of a Proxy exotic object _O_ takes no arguments. It performs the following steps when called:

1. Let _handler_ be _O_.[[ProxyHandler]]. 1. If _handler_ is *null*, throw a *TypeError* exception. @@ -9808,7 +9803,7 @@

[[PreventExtensions]] ( )

[[GetOwnProperty]] ( _P_ )

-

When the [[GetOwnProperty]] internal method of a Proxy exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[GetOwnProperty]] internal method of a Proxy exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _handler_ be _O_.[[ProxyHandler]]. @@ -9866,7 +9861,7 @@

[[GetOwnProperty]] ( _P_ )

[[DefineOwnProperty]] ( _P_, _Desc_ )

-

When the [[DefineOwnProperty]] internal method of a Proxy exotic object _O_ is called with property key _P_ and Property Descriptor _Desc_, the following steps are taken:

+

The [[DefineOwnProperty]] internal method of a Proxy exotic object _O_ takes arguments _P_ (a property key) and _Desc_ (a Property Descriptor). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _handler_ be _O_.[[ProxyHandler]]. @@ -9918,7 +9913,7 @@

[[DefineOwnProperty]] ( _P_, _Desc_ )

[[HasProperty]] ( _P_ )

-

When the [[HasProperty]] internal method of a Proxy exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[HasProperty]] internal method of a Proxy exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _handler_ be _O_.[[ProxyHandler]]. @@ -9955,7 +9950,7 @@

[[HasProperty]] ( _P_ )

[[Get]] ( _P_, _Receiver_ )

-

When the [[Get]] internal method of a Proxy exotic object _O_ is called with property key _P_ and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Get]] internal method of a Proxy exotic object _O_ takes arguments _P_ (a property key) and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _handler_ be _O_.[[ProxyHandler]]. @@ -9989,7 +9984,7 @@

[[Get]] ( _P_, _Receiver_ )

[[Set]] ( _P_, _V_, _Receiver_ )

-

When the [[Set]] internal method of a Proxy exotic object _O_ is called with property key _P_, value _V_, and ECMAScript language value _Receiver_, the following steps are taken:

+

The [[Set]] internal method of a Proxy exotic object _O_ takes arguments _P_ (a property key), _V_ (an ECMAScript language value), and _Receiver_ (an ECMAScript language value). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _handler_ be _O_.[[ProxyHandler]]. @@ -10027,7 +10022,7 @@

[[Set]] ( _P_, _V_, _Receiver_ )

[[Delete]] ( _P_ )

-

When the [[Delete]] internal method of a Proxy exotic object _O_ is called with property key _P_, the following steps are taken:

+

The [[Delete]] internal method of a Proxy exotic object _O_ takes argument _P_ (a property key). It performs the following steps when called:

1. Assert: IsPropertyKey(_P_) is *true*. 1. Let _handler_ be _O_.[[ProxyHandler]]. @@ -10064,7 +10059,7 @@

[[Delete]] ( _P_ )

[[OwnPropertyKeys]] ( )

-

When the [[OwnPropertyKeys]] internal method of a Proxy exotic object _O_ is called, the following steps are taken:

+

The [[OwnPropertyKeys]] internal method of a Proxy exotic object _O_ takes no arguments. It performs the following steps when called:

1. Let _handler_ be _O_.[[ProxyHandler]]. 1. If _handler_ is *null*, throw a *TypeError* exception. @@ -10125,7 +10120,7 @@

[[OwnPropertyKeys]] ( )

[[Call]] ( _thisArgument_, _argumentsList_ )

-

The [[Call]] internal method of a Proxy exotic object _O_ is called with parameters _thisArgument_ and _argumentsList_, a List of ECMAScript language values. The following steps are taken:

+

The [[Call]] internal method of a Proxy exotic object _O_ takes arguments _thisArgument_ (an ECMAScript language value) and _argumentsList_ (a List of ECMAScript language values). It performs the following steps when called:

1. Let _handler_ be _O_.[[ProxyHandler]]. 1. If _handler_ is *null*, throw a *TypeError* exception. @@ -10144,7 +10139,7 @@

[[Call]] ( _thisArgument_, _argumentsList_ )

[[Construct]] ( _argumentsList_, _newTarget_ )

-

The [[Construct]] internal method of a Proxy exotic object _O_ is called with parameters _argumentsList_ which is a possibly empty List of ECMAScript language values and _newTarget_. The following steps are taken:

+

The [[Construct]] internal method of a Proxy exotic object _O_ takes arguments _argumentsList_ (a List of ECMAScript language values) and _newTarget_ (a constructor). It performs the following steps when called:

1. Let _handler_ be _O_.[[ProxyHandler]]. 1. If _handler_ is *null*, throw a *TypeError* exception.