From 7903729d7b6469684b4daa86124e2da3c1f7023b Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Fri, 28 Jun 2024 21:36:39 -0500 Subject: [PATCH] Editorial: Convert @@ notation to %% notation for well-known Symbols (#1314) - this avoids a conceptual conflict with decorators, when they land --- img/figure-2.svg | 50 +++--- spec.html | 449 ++++++++++++++++++++++++----------------------- 2 files changed, 250 insertions(+), 249 deletions(-) diff --git a/img/figure-2.svg b/img/figure-2.svg index fe1ac95e65..ef20a19c0f 100644 --- a/img/figure-2.svg +++ b/img/figure-2.svg @@ -83,14 +83,14 @@ - - - + + + - Function.prototype + Function.prototype - @@hasInstance() + %Symbol.hasInstance%() apply() bind() call() @@ -104,7 +104,7 @@ %GeneratorFunction.prototype% - @@toStringTag = + %Symbol.toStringTag% = "GeneratorFunction" @@ -127,26 +127,26 @@ - - - + + + - %IteratorPrototype% + %IteratorPrototype% - @@iterator() : object + %Symbol.iterator%() : object - - - - + + + + - %GeneratorPrototype% + %GeneratorPrototype% - @@toStringTag = "Generator" + %Symbol.toStringTag% = "Generator" next() : object @@ -189,7 +189,7 @@ - + %GeneratorFunction.prototype% @@ -242,12 +242,12 @@ - - - + + + - - + + @@ -272,8 +272,8 @@ constructor prototype - - constructor + + constructor prototype diff --git a/spec.html b/spec.html index 25bf97edec..6c89087c98 100644 --- a/spec.html +++ b/spec.html @@ -1207,7 +1207,8 @@

The Symbol Type

Well-Known Symbols

Well-known symbols are built-in Symbol values that are explicitly referenced by algorithms of this specification. They are typically used as the keys of properties whose values serve as extension points of a specification algorithm. Unless otherwise specified, well-known symbols values are shared by all realms ().

-

Within this specification a well-known symbol is referred to by using a notation of the form @@name, where “name” is one of the values listed in .

+

Within this specification a well-known symbol is referred to using the standard intrinsic notation where the intrinsic is one of the values listed in .

+ Previous editions of this specification used a notation of the form @@name, where the current edition would use `%Symbol.name%`. In particular, the following names were used: @@asyncIterator, @@hasInstance, @@isConcatSpreadable, @@iterator, @@match, @@matchAll, @@replace, @@search, @@species, @@split, @@toPrimitive, @@toStringTag, and @@unscopables. @@ -1225,7 +1226,7 @@

Well-Known Symbols

- + @@ -46377,8 +46378,8 @@

The %IteratorPrototype% Object

Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
- -

%IteratorPrototype% [ @@iterator ] ( )

+ +

%IteratorPrototype% [ %Symbol.iterator% ] ( )

This function performs the following steps when called:

1. Return the *this* value. @@ -46398,8 +46399,8 @@

The %AsyncIteratorPrototype% Object

All objects defined in this specification that implement the AsyncIterator interface also inherit from %AsyncIteratorPrototype%. ECMAScript code may also define objects that inherit from %AsyncIteratorPrototype%. The %AsyncIteratorPrototype% object provides a place where additional methods that are applicable to all async iterator objects may be added.

- -

%AsyncIteratorPrototype% [ @@asyncIterator ] ( )

+ +

%AsyncIteratorPrototype% [ %Symbol.asyncIterator% ] ( )

This function performs the following steps when called:

1. Return the *this* value. @@ -47472,15 +47473,15 @@

Promise.withResolvers ( )

- -

get Promise [ @@species ]

-

`Promise[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get Promise [ %Symbol.species% ]

+

`Promise[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value.

The value of the *"name"* property of this function is *"get [Symbol.species]"*.

-

Promise prototype methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its @@species property.

+

Promise prototype methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its %Symbol.species% property.

@@ -47601,9 +47602,9 @@

- -

Promise.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Promise"*.

+ +

Promise.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Promise"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -47758,9 +47759,9 @@

GeneratorFunction.prototype.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

- -

GeneratorFunction.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"GeneratorFunction"*.

+ +

GeneratorFunction.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"GeneratorFunction"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -47860,9 +47861,9 @@

AsyncGeneratorFunction.prototype.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

- -

AsyncGeneratorFunction.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"AsyncGeneratorFunction"*.

+ +

AsyncGeneratorFunction.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"AsyncGeneratorFunction"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -47943,9 +47944,9 @@

%GeneratorPrototype%.throw ( _exception_ )

- -

%GeneratorPrototype% [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Generator"*.

+ +

%GeneratorPrototype% [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Generator"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -48296,9 +48297,9 @@

%AsyncGeneratorPrototype%.throw ( _exception_ )

- -

%AsyncGeneratorPrototype% [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"AsyncGenerator"*.

+ +

%AsyncGeneratorPrototype% [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"AsyncGenerator"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -48719,10 +48720,10 @@

AsyncFunction.prototype.constructor

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

- -

AsyncFunction.prototype [ @@toStringTag ]

+ +

AsyncFunction.prototype [ %Symbol.toStringTag% ]

-

The initial value of the @@toStringTag property is the String value *"AsyncFunction"*.

+

The initial value of the %Symbol.toStringTag% property is the String value *"AsyncFunction"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -48991,9 +48992,9 @@

Reflect.setPrototypeOf ( _target_, _proto_ )

- -

Reflect [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Reflect"*.

+ +

Reflect [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Reflect"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -49061,9 +49062,9 @@

Module Namespace Objects

A Module Namespace Object is a module namespace exotic object that provides runtime property-based access to a module's exported bindings. There is no constructor function for Module Namespace Objects. Instead, such an object is created for each module that is imported by an |ImportDeclaration| that contains a |NameSpaceImport|.

In addition to the properties specified in each Module Namespace Object has the following own property:

- -

@@toStringTag

-

The initial value of the @@toStringTag property is the String value *"Module"*.

+ +

%Symbol.toStringTag%

+

The initial value of the %Symbol.toStringTag% property is the String value *"Module"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

@@ -51367,7 +51368,7 @@

Corrections and Clarifications in ECMAScript 2015 with Possible Compatibilit

: If the year cannot be represented using the Date Time String Format specified in a RangeError exception is thrown. Previous editions did not specify the behaviour for that case.

: Previous editions did not specify the value returned by `Date.prototype.toString` when the time value is *NaN*. ECMAScript 2015 specifies the result to be the String value *"Invalid Date"*.

, : Any LineTerminator code points in the value of the *"source"* property of a RegExp instance must be expressed using an escape sequence. Edition 5.1 only required the escaping of `/`.

-

, : In previous editions, the specifications for `String.prototype.match` and `String.prototype.replace` was incorrect for cases where the pattern argument was a RegExp value whose `global` flag is set. The previous specifications stated that for each attempt to match the pattern, if `lastIndex` did not change, it should be incremented by 1. The correct behaviour is that `lastIndex` should be incremented by 1 only if the pattern matched the empty String.

+

, : In previous editions, the specifications for `String.prototype.match` and `String.prototype.replace` was incorrect for cases where the pattern argument was a RegExp value whose `global` flag is set. The previous specifications stated that for each attempt to match the pattern, if `lastIndex` did not change, it should be incremented by 1. The correct behaviour is that `lastIndex` should be incremented by 1 only if the pattern matched the empty String.

: Previous editions did not specify how a *NaN* value returned by a _comparefn_ was interpreted by `Array.prototype.sort`. ECMAScript 2015 specifies that such as value is treated as if *+0*𝔽 was returned from the _comparefn_. ECMAScript 2015 also specifies that ToNumber is applied to the result returned by a _comparefn_. In previous editions, the effect of a _comparefn_ result that is not a Number value was implementation-defined. In practice, implementations call ToNumber.

- @@asyncIterator + %Symbol.asyncIterator% *"Symbol.asyncIterator"* @@ -1236,7 +1237,7 @@

Well-Known Symbols

- @@hasInstance + %Symbol.hasInstance% *"Symbol.hasInstance"* @@ -1247,7 +1248,7 @@

Well-Known Symbols

- @@isConcatSpreadable + %Symbol.isConcatSpreadable% *"Symbol.isConcatSpreadable"* @@ -1258,7 +1259,7 @@

Well-Known Symbols

- @@iterator + %Symbol.iterator% *"Symbol.iterator"* @@ -1269,7 +1270,7 @@

Well-Known Symbols

- @@match + %Symbol.match% *"Symbol.match"* @@ -1280,7 +1281,7 @@

Well-Known Symbols

- @@matchAll + %Symbol.matchAll% *"Symbol.matchAll"* @@ -1291,7 +1292,7 @@

Well-Known Symbols

- @@replace + %Symbol.replace% *"Symbol.replace"* @@ -1302,7 +1303,7 @@

Well-Known Symbols

- @@search + %Symbol.search% *"Symbol.search"* @@ -1313,7 +1314,7 @@

Well-Known Symbols

- @@species + %Symbol.species% *"Symbol.species"* @@ -1324,7 +1325,7 @@

Well-Known Symbols

- @@split + %Symbol.split% *"Symbol.split"* @@ -1335,7 +1336,7 @@

Well-Known Symbols

- @@toPrimitive + %Symbol.toPrimitive% *"Symbol.toPrimitive"* @@ -1346,7 +1347,7 @@

Well-Known Symbols

- @@toStringTag + %Symbol.toStringTag% *"Symbol.toStringTag"* @@ -1357,7 +1358,7 @@

Well-Known Symbols

- @@unscopables + %Symbol.unscopables% *"Symbol.unscopables"* @@ -4836,7 +4837,7 @@

1. If _input_ is an Object, then - 1. Let _exoticToPrim_ be ? GetMethod(_input_, @@toPrimitive). + 1. Let _exoticToPrim_ be ? GetMethod(_input_, %Symbol.toPrimitive%). 1. If _exoticToPrim_ is not *undefined*, then 1. If _preferredType_ is not present, then 1. Let _hint_ be *"default"*. @@ -4853,7 +4854,7 @@

1. Return _input_. -

When ToPrimitive is called without a hint, then it generally behaves as if the hint were ~number~. However, objects may over-ride this behaviour by defining a @@toPrimitive method. Of the objects defined in this specification only Dates (see ) and Symbol objects (see ) over-ride the default ToPrimitive behaviour. Dates treat the absence of a hint as if the hint were ~string~.

+

When ToPrimitive is called without a hint, then it generally behaves as if the hint were ~number~. However, objects may over-ride this behaviour by defining a %Symbol.toPrimitive% method. Of the objects defined in this specification only Dates (see ) and Symbol objects (see ) over-ride the default ToPrimitive behaviour. Dates treat the absence of a hint as if the hint were ~string~.

@@ -5819,7 +5820,7 @@

1. If _argument_ is not an Object, return *false*. - 1. Let _matcher_ be ? Get(_argument_, @@match). + 1. Let _matcher_ be ? Get(_argument_, %Symbol.match%). 1. If _matcher_ is not *undefined*, return ToBoolean(_matcher_). 1. If _argument_ has a [[RegExpMatcher]] internal slot, return *true*. 1. Return *false*. @@ -6499,13 +6500,13 @@

description
-
It is used to retrieve the constructor that should be used to create new objects that are derived from _O_. _defaultConstructor_ is the constructor to use if a constructor @@species property cannot be found starting from _O_.
+
It is used to retrieve the constructor that should be used to create new objects that are derived from _O_. _defaultConstructor_ is the constructor to use if a constructor %Symbol.species% property cannot be found starting from _O_.
1. Let _C_ be ? Get(_O_, *"constructor"*). 1. If _C_ is *undefined*, return _defaultConstructor_. 1. If _C_ is not an Object, throw a *TypeError* exception. - 1. Let _S_ be ? Get(_C_, @@species). + 1. Let _S_ be ? Get(_C_, %Symbol.species%). 1. If _S_ is either *undefined* or *null*, return _defaultConstructor_. 1. If IsConstructor(_S_) is *true*, return _S_. 1. Throw a *TypeError* exception. @@ -6917,14 +6918,14 @@

1. If _kind_ is ~async~, then - 1. Let _method_ be ? GetMethod(_obj_, @@asyncIterator). + 1. Let _method_ be ? GetMethod(_obj_, %Symbol.asyncIterator%). 1. If _method_ is *undefined*, then - 1. Let _syncMethod_ be ? GetMethod(_obj_, @@iterator). + 1. Let _syncMethod_ be ? GetMethod(_obj_, %Symbol.iterator%). 1. If _syncMethod_ is *undefined*, throw a *TypeError* exception. 1. Let _syncIteratorRecord_ be ? GetIteratorFromMethod(_obj_, _syncMethod_). 1. Return CreateAsyncFromSyncIterator(_syncIteratorRecord_). 1. Else, - 1. Let _method_ be ? GetMethod(_obj_, @@iterator). + 1. Let _method_ be ? GetMethod(_obj_, %Symbol.iterator%). 1. If _method_ is *undefined*, throw a *TypeError* exception. 1. Return ? GetIteratorFromMethod(_obj_, _method_). @@ -10321,7 +10322,7 @@

1. Let _foundBinding_ be ? HasProperty(_bindingObject_, _N_). 1. If _foundBinding_ is *false*, return *false*. 1. If _envRec_.[[IsWithEnvironment]] is *false*, return *true*. - 1. Let _unscopables_ be ? Get(_bindingObject_, @@unscopables). + 1. Let _unscopables_ be ? Get(_bindingObject_, %Symbol.unscopables%). 1. If _unscopables_ is an Object, then 1. Let _blocked_ be ToBoolean(? Get(_unscopables_, _N_)). 1. If _blocked_ is *true*, return *false*. @@ -14113,7 +14114,7 @@

1. If _thisRealm_ and _realmC_ are not the same Realm Record, then 1. If SameValue(_C_, _realmC_.[[Intrinsics]].[[%Array%]]) is *true*, set _C_ to *undefined*. 1. If _C_ is an Object, then - 1. Set _C_ to ? Get(_C_, @@species). + 1. Set _C_ to ? Get(_C_, %Symbol.species%). 1. If _C_ is *null*, set _C_ to *undefined*. 1. If _C_ is *undefined*, return ? ArrayCreate(_length_). 1. If IsConstructor(_C_) is *false*, throw a *TypeError* exception. @@ -14457,7 +14458,7 @@

1. Let _val_ be _argumentsList_[_index_]. 1. Perform ! CreateDataPropertyOrThrow(_obj_, ! ToString(𝔽(_index_)), _val_). 1. Set _index_ to _index_ + 1. - 1. Perform ! DefinePropertyOrThrow(_obj_, @@iterator, PropertyDescriptor { [[Value]]: %Array.prototype.values%, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }). + 1. Perform ! DefinePropertyOrThrow(_obj_, %Symbol.iterator%, PropertyDescriptor { [[Value]]: %Array.prototype.values%, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }). 1. Perform ! DefinePropertyOrThrow(_obj_, *"callee"*, PropertyDescriptor { [[Get]]: %ThrowTypeError%, [[Set]]: %ThrowTypeError%, [[Enumerable]]: *false*, [[Configurable]]: *false* }). 1. Return _obj_. @@ -14505,7 +14506,7 @@

1. Let _p_ be MakeArgSetter(_name_, _env_). 1. Perform ! _map_.[[DefineOwnProperty]](! ToString(𝔽(_index_)), PropertyDescriptor { [[Set]]: _p_, [[Get]]: _g_, [[Enumerable]]: *false*, [[Configurable]]: *true* }). 1. Set _index_ to _index_ - 1. - 1. Perform ! DefinePropertyOrThrow(_obj_, @@iterator, PropertyDescriptor { [[Value]]: %Array.prototype.values%, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }). + 1. Perform ! DefinePropertyOrThrow(_obj_, %Symbol.iterator%, PropertyDescriptor { [[Value]]: %Array.prototype.values%, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }). 1. Perform ! DefinePropertyOrThrow(_obj_, *"callee"*, PropertyDescriptor { [[Value]]: _func_, [[Writable]]: *true*, [[Enumerable]]: *false*, [[Configurable]]: *true* }). 1. Return _obj_. @@ -20237,18 +20238,18 @@

description
-
It implements the generic algorithm for determining if _V_ is an instance of _target_ either by consulting _target_'s @@hasInstance method or, if absent, determining whether the value of _target_'s *"prototype"* property is present in _V_'s prototype chain.
+
It implements the generic algorithm for determining if _V_ is an instance of _target_ either by consulting _target_'s %Symbol.hasInstance% method or, if absent, determining whether the value of _target_'s *"prototype"* property is present in _V_'s prototype chain.
1. If _target_ is not an Object, throw a *TypeError* exception. - 1. Let _instOfHandler_ be ? GetMethod(_target_, @@hasInstance). + 1. Let _instOfHandler_ be ? GetMethod(_target_, %Symbol.hasInstance%). 1. If _instOfHandler_ is not *undefined*, then 1. Return ToBoolean(? Call(_instOfHandler_, _target_, « _V_ »)). 1. [id="step-instanceof-check-function"] If IsCallable(_target_) is *false*, throw a *TypeError* exception. 1. [id="step-instanceof-fallback"] Return ? OrdinaryHasInstance(_target_, _V_). -

Steps and provide compatibility with previous editions of ECMAScript that did not use a @@hasInstance method to define the `instanceof` operator semantics. If an object does not define or inherit @@hasInstance it uses the default `instanceof` semantics.

+

Steps and provide compatibility with previous editions of ECMAScript that did not use a %Symbol.hasInstance% method to define the `instanceof` operator semantics. If an object does not define or inherit %Symbol.hasInstance% it uses the default `instanceof` semantics.

@@ -24905,7 +24906,7 @@

1. If NewTarget is *undefined*, throw a *TypeError* exception. 1. Let _F_ be the active function object. 1. If _F_.[[ConstructorKind]] is ~derived~, then - 1. NOTE: This branch behaves similarly to `constructor(...args) { super(...args); }`. The most notable distinction is that while the aforementioned ECMAScript source text observably calls the @@iterator method on `%Array.prototype%`, this function does not. + 1. NOTE: This branch behaves similarly to `constructor(...args) { super(...args); }`. The most notable distinction is that while the aforementioned ECMAScript source text observably calls the %Symbol.iterator% method on `%Array.prototype%`, this function does not. 1. Let _func_ be ! _F_.[[GetPrototypeOf]](). 1. If IsConstructor(_func_) is *false*, throw a *TypeError* exception. 1. Let _result_ be ? Construct(_func_, _args_, NewTarget). @@ -30044,12 +30045,12 @@

Object.prototype.toString ( )

1. Else if _O_ has a [[DateValue]] internal slot, let _builtinTag_ be *"Date"*. 1. Else if _O_ has a [[RegExpMatcher]] internal slot, let _builtinTag_ be *"RegExp"*. 1. Else, let _builtinTag_ be *"Object"*. - 1. Let _tag_ be ? Get(_O_, @@toStringTag). + 1. Let _tag_ be ? Get(_O_, %Symbol.toStringTag%). 1. If _tag_ is not a String, set _tag_ to _builtinTag_. 1. Return the string-concatenation of *"[object "*, _tag_, and *"]"*.
-

Historically, this method was occasionally used to access the String value of the [[Class]] internal slot that was used in previous editions of this specification as a nominal type tag for various built-in objects. The above definition of `toString` preserves compatibility for legacy code that uses `toString` as a test for those specific kinds of built-in objects. It does not provide a reliable type testing mechanism for other kinds of built-in or program defined objects. In addition, programs can use @@toStringTag in ways that will invalidate the reliability of such legacy type tests.

+

Historically, this method was occasionally used to access the String value of the [[Class]] internal slot that was used in previous editions of this specification as a nominal type tag for various built-in objects. The above definition of `toString` preserves compatibility for legacy code that uses `toString` as a test for those specific kinds of built-in objects. It does not provide a reliable type testing mechanism for other kinds of built-in or program defined objects. In addition, programs can use %Symbol.toStringTag% in ways that will invalidate the reliability of such legacy type tests.

@@ -30412,8 +30413,8 @@

Function.prototype.toString ( )

- -

Function.prototype [ @@hasInstance ] ( _V_ )

+ +

Function.prototype [ %Symbol.hasInstance% ] ( _V_ )

This method performs the following steps when called:

1. Let _F_ be the *this* value. @@ -30421,15 +30422,15 @@

Function.prototype [ @@hasInstance ] ( _V_ )

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

-

This is the default implementation of `@@hasInstance` that most functions inherit. `@@hasInstance` is called by the `instanceof` operator to determine whether a value is an instance of a specific constructor. An expression such as

+

This is the default implementation of `%Symbol.hasInstance%` that most functions inherit. `%Symbol.hasInstance%` is called by the `instanceof` operator to determine whether a value is an instance of a specific constructor. An expression such as


             v instanceof F
           

evaluates as


-            F[@@hasInstance](v)
+            F[%Symbol.hasInstance%](v)
           
-

A constructor function can control which objects are recognized as its instances by `instanceof` by exposing a different `@@hasInstance` method on the function.

+

A constructor function can control which objects are recognized as its instances by `instanceof` by exposing a different `%Symbol.hasInstance%` method on the function.

This property is non-writable and non-configurable to prevent tampering that could be used to globally expose the target function of a bound function.

The value of the *"name"* property of this method is *"[Symbol.hasInstance]"*.

@@ -30616,7 +30617,7 @@

Properties of the Symbol Constructor

Symbol.asyncIterator

-

The initial value of `Symbol.asyncIterator` is the well-known symbol @@asyncIterator ().

+

The initial value of `Symbol.asyncIterator` is the well-known symbol %Symbol.asyncIterator% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

@@ -30676,19 +30677,19 @@

Symbol.for ( _key_ )

Symbol.hasInstance

-

The initial value of `Symbol.hasInstance` is the well-known symbol @@hasInstance ().

+

The initial value of `Symbol.hasInstance` is the well-known symbol %Symbol.hasInstance% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.isConcatSpreadable

-

The initial value of `Symbol.isConcatSpreadable` is the well-known symbol @@isConcatSpreadable ().

+

The initial value of `Symbol.isConcatSpreadable` is the well-known symbol %Symbol.isConcatSpreadable% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.iterator

-

The initial value of `Symbol.iterator` is the well-known symbol @@iterator ().

+

The initial value of `Symbol.iterator` is the well-known symbol %Symbol.iterator% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

@@ -30703,13 +30704,13 @@

Symbol.keyFor ( _sym_ )

Symbol.match

-

The initial value of `Symbol.match` is the well-known symbol @@match ().

+

The initial value of `Symbol.match` is the well-known symbol %Symbol.match% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.matchAll

-

The initial value of `Symbol.matchAll` is the well-known symbol @@matchAll ().

+

The initial value of `Symbol.matchAll` is the well-known symbol %Symbol.matchAll% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

@@ -30721,43 +30722,43 @@

Symbol.prototype

Symbol.replace

-

The initial value of `Symbol.replace` is the well-known symbol @@replace ().

+

The initial value of `Symbol.replace` is the well-known symbol %Symbol.replace% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.search

-

The initial value of `Symbol.search` is the well-known symbol @@search ().

+

The initial value of `Symbol.search` is the well-known symbol %Symbol.search% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.species

-

The initial value of `Symbol.species` is the well-known symbol @@species ().

+

The initial value of `Symbol.species` is the well-known symbol %Symbol.species% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.split

-

The initial value of `Symbol.split` is the well-known symbol @@split ().

+

The initial value of `Symbol.split` is the well-known symbol %Symbol.split% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.toPrimitive

-

The initial value of `Symbol.toPrimitive` is the well-known symbol @@toPrimitive ().

+

The initial value of `Symbol.toPrimitive` is the well-known symbol %Symbol.toPrimitive% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.toStringTag

-

The initial value of `Symbol.toStringTag` is the well-known symbol @@toStringTag ().

+

The initial value of `Symbol.toStringTag` is the well-known symbol %Symbol.toStringTag% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

Symbol.unscopables

-

The initial value of `Symbol.unscopables` is the well-known symbol @@unscopables ().

+

The initial value of `Symbol.unscopables` is the well-known symbol %Symbol.unscopables% ().

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

@@ -30838,8 +30839,8 @@

- -

Symbol.prototype [ @@toPrimitive ] ( _hint_ )

+ +

Symbol.prototype [ %Symbol.toPrimitive% ] ( _hint_ )

This method is called by ECMAScript language operators to convert a Symbol object to a primitive value.

It performs the following steps when called:

@@ -30852,9 +30853,9 @@

Symbol.prototype [ @@toPrimitive ] ( _hint_ )

The value of the *"name"* property of this method is *"[Symbol.toPrimitive]"*.

- -

Symbol.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Symbol"*.

+ +

Symbol.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Symbol"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -31707,9 +31708,9 @@

- -

BigInt.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"BigInt"*.

+ +

BigInt.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"BigInt"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -31796,9 +31797,9 @@

Math.SQRT2

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

Math [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Math"*.

+ +

Math [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Math"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -34367,8 +34368,8 @@

Date.prototype.valueOf ( )

- -

Date.prototype [ @@toPrimitive ] ( _hint_ )

+ +

Date.prototype [ %Symbol.toPrimitive% ] ( _hint_ )

This method is called by ECMAScript language operators to convert a Date to a primitive value. The allowed values for _hint_ are *"default"*, *"number"*, and *"string"*. Dates are unique among built-in ECMAScript object in that they treat *"default"* as being equivalent to *"string"*, All other built-in ECMAScript objects treat *"default"* as being equivalent to *"number"*.

It performs the following steps when called:

@@ -34782,12 +34783,12 @@

String.prototype.match ( _regexp_ )

1. Let _O_ be ? RequireObjectCoercible(*this* value). 1. If _regexp_ is neither *undefined* nor *null*, then - 1. Let _matcher_ be ? GetMethod(_regexp_, @@match). + 1. Let _matcher_ be ? GetMethod(_regexp_, %Symbol.match%). 1. If _matcher_ is not *undefined*, then 1. Return ? Call(_matcher_, _regexp_, « _O_ »). 1. Let _S_ be ? ToString(_O_). 1. Let _rx_ be ? RegExpCreate(_regexp_, *undefined*). - 1. Return ? Invoke(_rx_, @@match, « _S_ »). + 1. Return ? Invoke(_rx_, %Symbol.match%, « _S_ »).

This method is intentionally generic; it does not require that its *this* value be a String object. Therefore, it can be transferred to other kinds of objects for use as a method.

@@ -34807,12 +34808,12 @@

String.prototype.matchAll ( _regexp_ )

1. Let _flags_ be ? Get(_regexp_, *"flags"*). 1. Perform ? RequireObjectCoercible(_flags_). 1. If ? ToString(_flags_) does not contain *"g"*, throw a *TypeError* exception. - 1. Let _matcher_ be ? GetMethod(_regexp_, @@matchAll). + 1. Let _matcher_ be ? GetMethod(_regexp_, %Symbol.matchAll%). 1. If _matcher_ is not *undefined*, then 1. Return ? Call(_matcher_, _regexp_, « _O_ »). 1. Let _S_ be ? ToString(_O_). 1. Let _rx_ be ? RegExpCreate(_regexp_, *"g"*). - 1. Return ? Invoke(_rx_, @@matchAll, « _S_ »). + 1. Return ? Invoke(_rx_, %Symbol.matchAll%, « _S_ »).
This method is intentionally generic, it does not require that its *this* value be a String object. Therefore, it can be transferred to other kinds of objects for use as a method. Similarly to `String.prototype.split`, `String.prototype.matchAll` is designed to typically act without mutating its inputs. @@ -34943,7 +34944,7 @@

String.prototype.replace ( _searchValue_, _replaceValue_ )

1. Let _O_ be ? RequireObjectCoercible(*this* value). 1. If _searchValue_ is neither *undefined* nor *null*, then - 1. Let _replacer_ be ? GetMethod(_searchValue_, @@replace). + 1. Let _replacer_ be ? GetMethod(_searchValue_, %Symbol.replace%). 1. If _replacer_ is not *undefined*, then 1. Return ? Call(_replacer_, _searchValue_, « _O_, _replaceValue_ »). 1. Let _string_ be ? ToString(_O_). @@ -35004,7 +35005,7 @@

1. Let _matchLength_ be the length of _matched_. 1. Let _tailPos_ be _position_ + _matchLength_. 1. Let _refReplacement_ be the substring of _str_ from min(_tailPos_, _stringLength_). - 1. NOTE: _tailPos_ can exceed _stringLength_ only if this abstract operation was invoked by a call to the intrinsic @@replace method of %RegExp.prototype% on an object whose *"exec"* property is not the intrinsic %RegExp.prototype.exec%. + 1. NOTE: _tailPos_ can exceed _stringLength_ only if this abstract operation was invoked by a call to the intrinsic %Symbol.replace% method of %RegExp.prototype% on an object whose *"exec"* property is not the intrinsic %RegExp.prototype.exec%. 1. Else if _templateRemainder_ starts with *"$"* followed by 1 or more decimal digits, then 1. If _templateRemainder_ starts with *"$"* followed by 2 or more decimal digits, let _digitCount_ be 2. Otherwise, let _digitCount_ be 1. 1. Let _digits_ be the substring of _templateRemainder_ from 1 to 1 + _digitCount_. @@ -35061,7 +35062,7 @@

String.prototype.replaceAll ( _searchValue_, _replaceValue_ )

1. Let _flags_ be ? Get(_searchValue_, *"flags"*). 1. Perform ? RequireObjectCoercible(_flags_). 1. If ? ToString(_flags_) does not contain *"g"*, throw a *TypeError* exception. - 1. Let _replacer_ be ? GetMethod(_searchValue_, @@replace). + 1. Let _replacer_ be ? GetMethod(_searchValue_, %Symbol.replace%). 1. If _replacer_ is not *undefined*, then 1. Return ? Call(_replacer_, _searchValue_, « _O_, _replaceValue_ »). 1. Let _string_ be ? ToString(_O_). @@ -35100,12 +35101,12 @@

String.prototype.search ( _regexp_ )

1. Let _O_ be ? RequireObjectCoercible(*this* value). 1. If _regexp_ is neither *undefined* nor *null*, then - 1. Let _searcher_ be ? GetMethod(_regexp_, @@search). + 1. Let _searcher_ be ? GetMethod(_regexp_, %Symbol.search%). 1. If _searcher_ is not *undefined*, then 1. Return ? Call(_searcher_, _regexp_, « _O_ »). 1. Let _string_ be ? ToString(_O_). 1. Let _rx_ be ? RegExpCreate(_regexp_, *undefined*). - 1. Return ? Invoke(_rx_, @@search, « _string_ »). + 1. Return ? Invoke(_rx_, %Symbol.search%, « _string_ »).

This method is intentionally generic; it does not require that its *this* value be a String object. Therefore, it can be transferred to other kinds of objects for use as a method.

@@ -35138,12 +35139,12 @@

String.prototype.slice ( _start_, _end_ )

String.prototype.split ( _separator_, _limit_ )

-

This method returns an Array into which substrings of the result of converting this object to a String have been stored. The substrings are determined by searching from left to right for occurrences of _separator_; these occurrences are not part of any String in the returned array, but serve to divide up the String value. The value of _separator_ may be a String of any length or it may be an object, such as a RegExp, that has a @@split method.

+

This method returns an Array into which substrings of the result of converting this object to a String have been stored. The substrings are determined by searching from left to right for occurrences of _separator_; these occurrences are not part of any String in the returned array, but serve to divide up the String value. The value of _separator_ may be a String of any length or it may be an object, such as a RegExp, that has a %Symbol.split% method.

It performs the following steps when called:

1. Let _O_ be ? RequireObjectCoercible(*this* value). 1. If _separator_ is neither *undefined* nor *null*, then - 1. Let _splitter_ be ? GetMethod(_separator_, @@split). + 1. Let _splitter_ be ? GetMethod(_separator_, %Symbol.split%). 1. If _splitter_ is not *undefined*, then 1. Return ? Call(_splitter_, _separator_, « _O_, _limit_ »). 1. Let _S_ be ? ToString(_O_). @@ -35411,8 +35412,8 @@

- -

String.prototype [ @@iterator ] ( )

+ +

String.prototype [ %Symbol.iterator% ] ( )

This method returns an Iterator object () that iterates over the code points of a String value, returning each code point as a String value.

It performs the following steps when called:

@@ -35467,9 +35468,9 @@

%StringIteratorPrototype%.next ( )

- -

%StringIteratorPrototype% [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"String Iterator"*.

+ +

%StringIteratorPrototype% [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"String Iterator"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -37760,15 +37761,15 @@

RegExp.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

get RegExp [ @@species ]

-

`RegExp[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get RegExp [ %Symbol.species% ]

+

`RegExp[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value.

The value of the *"name"* property of this function is *"get [Symbol.species]"*.

-

RegExp prototype methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its @@species property.

+

RegExp prototype methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its %Symbol.species% property.

@@ -37890,8 +37891,8 @@

get RegExp.prototype.ignoreCase

- -

RegExp.prototype [ @@match ] ( _string_ )

+ +

RegExp.prototype [ %Symbol.match% ] ( _string_ )

This method performs the following steps when called:

1. Let _rx_ be the *this* value. @@ -37921,12 +37922,12 @@

RegExp.prototype [ @@match ] ( _string_ )

The value of the *"name"* property of this method is *"[Symbol.match]"*.

-

The @@match property is used by the IsRegExp abstract operation to identify objects that have the basic behaviour of regular expressions. The absence of a @@match property or the existence of such a property whose value does not Boolean coerce to *true* indicates that the object is not intended to be used as a regular expression object.

+

The %Symbol.match% property is used by the IsRegExp abstract operation to identify objects that have the basic behaviour of regular expressions. The absence of a %Symbol.match% property or the existence of such a property whose value does not Boolean coerce to *true* indicates that the object is not intended to be used as a regular expression object.

- -

RegExp.prototype [ @@matchAll ] ( _string_ )

+ +

RegExp.prototype [ %Symbol.matchAll% ] ( _string_ )

This method performs the following steps when called:

1. Let _R_ be the *this* value. @@ -37956,8 +37957,8 @@

get RegExp.prototype.multiline

- -

RegExp.prototype [ @@replace ] ( _string_, _replaceValue_ )

+ +

RegExp.prototype [ %Symbol.replace% ] ( _string_, _replaceValue_ )

This method performs the following steps when called:

1. Let _rx_ be the *this* value. @@ -38027,8 +38028,8 @@

RegExp.prototype [ @@replace ] ( _string_, _replaceValue_ )

The value of the *"name"* property of this method is *"[Symbol.replace]"*.

- -

RegExp.prototype [ @@search ] ( _string_ )

+ +

RegExp.prototype [ %Symbol.search% ] ( _string_ )

This method performs the following steps when called:

1. Let _rx_ be the *this* value. @@ -38088,8 +38089,8 @@

- -

RegExp.prototype [ @@split ] ( _string_, _limit_ )

+ +

RegExp.prototype [ %Symbol.split% ] ( _string_, _limit_ )

This method returns an Array into which substrings of the result of converting _string_ to a String have been stored. The substrings are determined by searching from left to right for matches of the *this* value regular expression; these occurrences are not part of any String in the returned array, but serve to divide up the String value.

The *this* value may be an empty regular expression or a regular expression that can match an empty String. In this case, the regular expression does not match the empty substring at the beginning or end of the input String, nor does it match the empty substring at the end of the previous separator match. (For example, if the regular expression matches the empty String, the String is split up into individual code unit elements; the length of the result array equals the length of the String, and each substring contains one code unit.) Only the first match at a given index of the String is considered, even if backtracking could yield a non-empty substring match at that index. (For example, `/a*?/[Symbol.split]("ab")` evaluates to the array `["a", "b"]`, while `/a*/[Symbol.split]("ab")` evaluates to the array `["","b"]`.)

@@ -38536,9 +38537,9 @@

%RegExpStringIteratorPrototype%.next ( )

- -

%RegExpStringIteratorPrototype% [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"RegExp String Iterator"*.

+ +

%RegExpStringIteratorPrototype% [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"RegExp String Iterator"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -38619,7 +38620,7 @@

Array.from ( _items_ [ , _mapfn_ [ , _thisArg_ ] ] )

1. Else, 1. If IsCallable(_mapfn_) is *false*, throw a *TypeError* exception. 1. Let _mapping_ be *true*. - 1. Let _usingIterator_ be ? GetMethod(_items_, @@iterator). + 1. Let _usingIterator_ be ? GetMethod(_items_, %Symbol.iterator%). 1. If _usingIterator_ is not *undefined*, then 1. If IsConstructor(_C_) is *true*, then 1. Let _A_ be ? Construct(_C_). @@ -38708,15 +38709,15 @@

Array.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

get Array [ @@species ]

-

`Array[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get Array [ %Symbol.species% ]

+

`Array[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value.

The value of the *"name"* property of this function is *"get [Symbol.species]"*.

-

Array prototype methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its @@species property.

+

Array prototype methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its %Symbol.species% property.

@@ -38798,7 +38799,7 @@

1. If _O_ is not an Object, return *false*. - 1. Let _spreadable_ be ? Get(_O_, @@isConcatSpreadable). + 1. Let _spreadable_ be ? Get(_O_, %Symbol.isConcatSpreadable%). 1. If _spreadable_ is not *undefined*, return ToBoolean(_spreadable_). 1. Return ? IsArray(_O_). @@ -40001,14 +40002,14 @@

Array.prototype.with ( _index_, _value_ )

- -

Array.prototype [ @@iterator ] ( )

-

The initial value of the @@iterator property is %Array.prototype.values%, defined in .

+ +

Array.prototype [ %Symbol.iterator% ] ( )

+

The initial value of the %Symbol.iterator% property is %Array.prototype.values%, defined in .

- -

Array.prototype [ @@unscopables ]

-

The initial value of the @@unscopables data property is an object created by the following steps:

+ +

Array.prototype [ %Symbol.unscopables% ]

+

The initial value of the %Symbol.unscopables% data property is an object created by the following steps:

1. Let _unscopableList_ be OrdinaryObjectCreate(*null*). 1. Perform ! CreateDataPropertyOrThrow(_unscopableList_, *"at"*, *true*). @@ -40112,9 +40113,9 @@

%ArrayIteratorPrototype%.next ( )

- -

%ArrayIteratorPrototype% [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Array Iterator"*.

+ +

%ArrayIteratorPrototype% [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Array Iterator"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -40386,7 +40387,7 @@

%TypedArray%.from ( _source_ [ , _mapfn_ [ , _thisArg_ ] ] )

1. Else, 1. If IsCallable(_mapfn_) is *false*, throw a *TypeError* exception. 1. Let _mapping_ be *true*. - 1. Let _usingIterator_ be ? GetMethod(_source_, @@iterator). + 1. Let _usingIterator_ be ? GetMethod(_source_, %Symbol.iterator%). 1. If _usingIterator_ is not *undefined*, then 1. Let _values_ be ? IteratorToList(? GetIteratorFromMethod(_source_, _usingIterator_)). 1. Let _len_ be the number of elements in _values_. @@ -40446,15 +40447,15 @@

%TypedArray%.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

get %TypedArray% [ @@species ]

-

%TypedArray%`[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get %TypedArray% [ %Symbol.species% ]

+

%TypedArray%`[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value.

The value of the *"name"* property of this function is *"get [Symbol.species]"*.

-

%TypedArray.prototype% methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its @@species property.

+

%TypedArray.prototype% methods normally use their *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour by redefining its %Symbol.species% property.

@@ -41311,14 +41312,14 @@

%TypedArray%.prototype.with ( _index_, _value_ )

- -

%TypedArray%.prototype [ @@iterator ] ( )

-

The initial value of the @@iterator property is %TypedArray.prototype.values%, defined in .

+ +

%TypedArray%.prototype [ %Symbol.iterator% ] ( )

+

The initial value of the %Symbol.iterator% property is %TypedArray.prototype.values%, defined in .

- -

get %TypedArray%.prototype [ @@toStringTag ]

-

%TypedArray%`.prototype[@@toStringTag]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get %TypedArray%.prototype [ %Symbol.toStringTag% ]

+

%TypedArray%`.prototype[%Symbol.toStringTag%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Let _O_ be the *this* value. 1. If _O_ is not an Object, return *undefined*. @@ -41344,7 +41345,7 @@

description
-
It is used to specify the creation of a new TypedArray using a constructor function that is derived from _exemplar_. Unlike ArraySpeciesCreate, which can create non-Array objects through the use of @@species, this operation enforces that the constructor function creates an actual TypedArray.
+
It is used to specify the creation of a new TypedArray using a constructor function that is derived from _exemplar_. Unlike ArraySpeciesCreate, which can create non-Array objects through the use of %Symbol.species%, this operation enforces that the constructor function creates an actual TypedArray.
1. Let _defaultConstructor_ be the intrinsic object associated with the constructor name _exemplar_.[[TypedArrayName]] in . @@ -41387,7 +41388,7 @@

description
-
It is used to specify the creation of a new TypedArray using a constructor function that is derived from _exemplar_. Unlike TypedArraySpeciesCreate, which can construct custom TypedArray subclasses through the use of @@species, this operation always uses one of the built-in TypedArray constructors.
+
It is used to specify the creation of a new TypedArray using a constructor function that is derived from _exemplar_. Unlike TypedArraySpeciesCreate, which can construct custom TypedArray subclasses through the use of %Symbol.species%, this operation always uses one of the built-in TypedArray constructors.
1. Let _constructor_ be the intrinsic object associated with the constructor name _exemplar_.[[TypedArrayName]] in . @@ -41505,7 +41506,7 @@

_TypedArray_ ( ..._args_ )

1. Perform ? InitializeTypedArrayFromArrayBuffer(_O_, _firstArgument_, _byteOffset_, _length_). 1. Else, 1. Assert: _firstArgument_ is an Object and _firstArgument_ does not have either a [[TypedArrayName]] or an [[ArrayBufferData]] internal slot. - 1. Let _usingIterator_ be ? GetMethod(_firstArgument_, @@iterator). + 1. Let _usingIterator_ be ? GetMethod(_firstArgument_, %Symbol.iterator%). 1. If _usingIterator_ is not *undefined*, then 1. Let _values_ be ? IteratorToList(? GetIteratorFromMethod(_firstArgument_, _usingIterator_)). 1. Perform ? InitializeTypedArrayFromList(_O_, _values_). @@ -41786,7 +41787,7 @@

Map ( [ _iterable_ ] )

1. Return ? AddEntriesFromIterable(_map_, _iterable_, _adder_).
-

If the parameter _iterable_ is present, it is expected to be an object that implements an @@iterator method that returns an iterator object that produces a two element array-like object whose first element is a value that will be used as a Map key and whose second element is the value to associate with that key.

+

If the parameter _iterable_ is present, it is expected to be an object that implements an %Symbol.iterator% method that returns an iterator object that produces a two element array-like object whose first element is a value that will be used as a Map key and whose second element is the value to associate with that key.

@@ -41818,7 +41819,7 @@

1. IfAbruptCloseIterator(_status_, _iteratorRecord_). -

The parameter _iterable_ is expected to be an object that implements an @@iterator method that returns an iterator object that produces a two element array-like object whose first element is a value that will be used as a Map key and whose second element is the value to associate with that key.

+

The parameter _iterable_ is expected to be an object that implements an %Symbol.iterator% method that returns an iterator object that produces a two element array-like object whose first element is a value that will be used as a Map key and whose second element is the value to associate with that key.

@@ -41856,15 +41857,15 @@

Map.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

get Map [ @@species ]

-

`Map[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get Map [ %Symbol.species% ]

+

`Map[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value.

The value of the *"name"* property of this function is *"get [Symbol.species]"*.

-

Methods that create derived collection objects should call @@species to determine the constructor to use to create the derived objects. Subclass constructor may over-ride @@species to change the default constructor assignment.

+

Methods that create derived collection objects should call %Symbol.species% to determine the constructor to use to create the derived objects. Subclass constructor may over-ride %Symbol.species% to change the default constructor assignment.

@@ -42029,14 +42030,14 @@

Map.prototype.values ( )

- -

Map.prototype [ @@iterator ] ( )

-

The initial value of the @@iterator property is %Map.prototype.entries%, defined in .

+ +

Map.prototype [ %Symbol.iterator% ] ( )

+

The initial value of the %Symbol.iterator% property is %Map.prototype.entries%, defined in .

- -

Map.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Map"*.

+ +

Map.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Map"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -42103,9 +42104,9 @@

%MapIteratorPrototype%.next ( )

- -

%MapIteratorPrototype% [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Map Iterator"*.

+ +

%MapIteratorPrototype% [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Map Iterator"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -42308,15 +42309,15 @@

Set.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

get Set [ @@species ]

-

`Set[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get Set [ %Symbol.species% ]

+

`Set[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value.

The value of the *"name"* property of this function is *"get [Symbol.species]"*.

-

Methods that create derived collection objects should call @@species to determine the constructor to use to create the derived objects. Subclass constructor may over-ride @@species to change the default constructor assignment.

+

Methods that create derived collection objects should call %Symbol.species% to determine the constructor to use to create the derived objects. Subclass constructor may over-ride %Symbol.species% to change the default constructor assignment.

@@ -42661,14 +42662,14 @@

Set.prototype.values ( )

- -

Set.prototype [ @@iterator ] ( )

-

The initial value of the @@iterator property is %Set.prototype.values%, defined in .

+ +

Set.prototype [ %Symbol.iterator% ] ( )

+

The initial value of the %Symbol.iterator% property is %Set.prototype.values%, defined in .

- -

Set.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Set"*.

+ +

Set.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Set"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -42733,9 +42734,9 @@

%SetIteratorPrototype%.next ( )

- -

%SetIteratorPrototype% [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Set Iterator"*.

+ +

%SetIteratorPrototype% [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Set Iterator"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -42777,7 +42778,7 @@

WeakMap ( [ _iterable_ ] )

1. Return ? AddEntriesFromIterable(_map_, _iterable_, _adder_).
-

If the parameter _iterable_ is present, it is expected to be an object that implements an @@iterator method that returns an iterator object that produces a two element array-like object whose first element is a value that will be used as a WeakMap key and whose second element is the value to associate with that key.

+

If the parameter _iterable_ is present, it is expected to be an object that implements an %Symbol.iterator% method that returns an iterator object that produces a two element array-like object whose first element is a value that will be used as a WeakMap key and whose second element is the value to associate with that key.

@@ -42874,9 +42875,9 @@

WeakMap.prototype.set ( _key_, _value_ )

- -

WeakMap.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"WeakMap"*.

+ +

WeakMap.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"WeakMap"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -43003,9 +43004,9 @@

WeakSet.prototype.has ( _value_ )

- -

WeakSet.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"WeakSet"*.

+ +

WeakSet.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"WeakSet"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -43557,15 +43558,15 @@

ArrayBuffer.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

get ArrayBuffer [ @@species ]

-

`ArrayBuffer[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get ArrayBuffer [ %Symbol.species% ]

+

`ArrayBuffer[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value.

The value of the *"name"* property of this function is *"get [Symbol.species]"*.

-

normally uses its *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour for the method by redefining its @@species property.

+

normally uses its *this* value's constructor to create a derived object. However, a subclass constructor may over-ride that default behaviour for the method by redefining its %Symbol.species% property.

@@ -43714,9 +43715,9 @@

ArrayBuffer.prototype.transferToFixedLength ( [ _newLength_ ] )

- -

ArrayBuffer.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"ArrayBuffer"*.

+ +

ArrayBuffer.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"ArrayBuffer"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -43883,9 +43884,9 @@

SharedArrayBuffer.prototype

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *false* }.

- -

get SharedArrayBuffer [ @@species ]

-

`SharedArrayBuffer[@@species]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

+ +

get SharedArrayBuffer [ %Symbol.species% ]

+

`SharedArrayBuffer[%Symbol.species%]` is an accessor property whose set accessor function is *undefined*. Its get accessor function performs the following steps when called:

1. Return the *this* value. @@ -44008,9 +44009,9 @@

SharedArrayBuffer.prototype.slice ( _start_, _end_ )

- -

SharedArrayBuffer.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"SharedArrayBuffer"*.

+ +

SharedArrayBuffer.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"SharedArrayBuffer"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -44530,9 +44531,9 @@

DataView.prototype.setUint32 ( _byteOffset_, _value_ [ , _littleEndian_ ] )< - -

DataView.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"DataView"*.

+ +

DataView.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"DataView"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -45344,9 +45345,9 @@

Atomics.xor ( _typedArray_, _index_, _value_ )

- -

Atomics [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"Atomics"*.

+ +

Atomics [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"Atomics"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -45842,9 +45843,9 @@

- -

JSON [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"JSON"*.

+ +

JSON [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"JSON"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -45954,9 +45955,9 @@

WeakRef.prototype.deref ( )

- -

WeakRef.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"WeakRef"*.

+ +

WeakRef.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"WeakRef"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -46103,9 +46104,9 @@

FinalizationRegistry.prototype.unregister ( _unregisterToken_ )

- -

FinalizationRegistry.prototype [ @@toStringTag ]

-

The initial value of the @@toStringTag property is the String value *"FinalizationRegistry"*.

+ +

FinalizationRegistry.prototype [ %Symbol.toStringTag% ]

+

The initial value of the %Symbol.toStringTag% property is the String value *"FinalizationRegistry"*.

This property has the attributes { [[Writable]]: *false*, [[Enumerable]]: *false*, [[Configurable]]: *true* }.

@@ -46147,7 +46148,7 @@

The Iterable Interface

- `@@iterator` + `%Symbol.iterator%` a function that returns an Iterator object @@ -46251,7 +46252,7 @@

The AsyncIterable Interface

`@@asyncIterator``%Symbol.asyncIterator%` a function that returns an AsyncIterator object The returned object must conform to the AsyncIterator interface.