本规范中算法操作每个具有相关类型的值。可能的值类型直接定义在本章节中。这些类型进一步分为 ECMAScript 语言类型与规范类型。
-在本规范中,“Type(_x_)”表示法是“the type of _x_”的简写, 其中“type”指的是在本章节中定义的 ECMAScript 语言类型与规范类型。当一个值使用术语“empty”命名值时,它相当于说“没有任何类型的值(no value of any type)”。
+Algorithms within this specification manipulate values each of which has an associated type. The possible value types are exactly those defined in this clause. Types are further subclassified into ECMAScript language types and specification types.
+Within this specification, the notation “Type(_x_)” is used as shorthand for “the type of _x_” where “type” refers to the ECMAScript language and specification types defined in this clause. When the term “empty” is used as if it was naming a value, it is equivalent to saying “no value of any type”.
+一个 ECMAScript 语言类型对应那些 ECMAScript 程序员在 ECMAScript 语言中直接使用的值。 ECMAScript 语言类型有 Undefined, Null, Boolean, String,Symbol, Number, Object。 一个ECMAScript 语言值是指拥有 ECMAScript 语言类型特点的值。
+An ECMAScript language type corresponds to values that are directly manipulated by an ECMAScript programmer using the ECMAScript language. The ECMAScript language types are Undefined, Null, Boolean, String, Symbol, Number, and Object. An ECMAScript language value is a value that is characterized by an ECMAScript language type.
Undefined 类型仅仅只有一个值,`undefined`。 任何尚未分配值的变量值都为 `undefined`。
+The Undefined type has exactly one value, called *undefined*. Any variable that has not been assigned a value has the value *undefined*.
Null 类型只有一个值, `null`.
+The Null type has exactly one value, called *null*.
Boolean 类型表示具有 `true` 和 `false` 两个值的逻辑实体。
+The Boolean type represents a logical entity having two values, called *true* and *false*.
String 类型是零个或多个 16 位无符号整数值(“元素”)的所有有序序列的集合,最大长度为 253-1 个元素。字符串类型通常用于表示正在运行的 ECMAScript 程序中的文本数据,在这种情况下,String中的每个元素都被视为一个 UTF-16 码元。 每个元素被认为占据该序列内的一个位置。 这些位置用非负整数索引。 第一个元素(如果有)在索引 0 处,下一个元素(如果有的话)在索引 1 处,以此类推。 String 的长度是序列中的元素个数(即 16-bit 值)。空字符串的长度为零,因此不包含元素。
-ECMAScript 操作在解释字符串值时,每个元素都被认为是一个单独的 UTF-16 码元。但是,ECMAScript 对 String 值中的码元序列没有任何限制或要求,因此当按照 UTF-16 码元序列解释时, 它们可能是不正确的。(因为)不解释字符串内容的操作将它们当做无差别的 16-bit 无符号整数序列。可以使用函数 `String.prototype.normalize` (见
The String type is the set of all ordered sequences of zero or more 16-bit unsigned integer values (“elements”) up to a maximum length of 253-1 elements. The String type is generally used to represent textual data in a running ECMAScript program, in which case each element in the String is treated as a UTF-16 code unit value. Each element is regarded as occupying a position within the sequence. These positions are indexed with nonnegative integers. The first element (if any) is at index 0, the next element (if any) at index 1, and so on. The length of a String is the number of elements (i.e., 16-bit values) within it. The empty String has length zero and therefore contains no elements.
+Where ECMAScript operations interpret String values, each element is interpreted as a single UTF-16 code unit. However, ECMAScript does not place any restrictions or requirements on the sequence of code units in a String value, so they may be ill-formed when interpreted as UTF-16 code unit sequences. Operations that do not interpret String contents treat them as sequences of undifferentiated 16-bit unsigned integers. The function `String.prototype.normalize` (see
这种设计背后的理由是尽可能的保持 String 的实现简单和高效。 如果 ECMAScript 源文本符合 Normalized Form C,只要它们不包含任何 Unicode 转义序列,则字符串字面量保证也是标准化的。
+The rationale behind this design was to keep the implementation of Strings as simple and high-performing as possible. If ECMAScript source text is in Normalized Form C, string literals are guaranteed to also be normalized, as long as they do not contain any Unicode escape sequences.
一些操作将字符串内容解释为 UTF-16 编码的 Unicode 码点。 在这种情况下,解释过程是:
+Some operations interpret String contents as UTF-16 encoded Unicode code points. In that case the interpretation is:
在本规范中,短语"the string-concatenation of _A_,_B_,..."表示字符串代码单元的序列是每个参数的代码单元的连接。
+In this specification, the phrase "the string-concatenation of _A_, _B_, ..." (where each argument is a String value, a code unit, or a sequence of code units) denotes the String value whose sequence of code units is the concatenation of the code units (in order) of each of the arguments (in order).
Symbol 类型是所有可以用于作为 Object 属性的 key 的非字符串值的集合。(
每个可能的 Symbol 值都是唯一的和不可变的。
-每个 Symbol 值永远地保持一个与之关联的叫做 [[Description]] 的值(它要么是 undefined 要么是一个 String 值)。
+The Symbol type is the set of all non-String values that may be used as the key of an Object property (
Each possible Symbol value is unique and immutable.
+Each Symbol value immutably holds an associated value called [[Description]] that is either *undefined* or a String value.
著名 Symbol 是那些被本规范中算法明确引用的内置 Symbol 值。它们通常被用作属性的 key,这些 key 的值为规范的算法提供了一种扩展。除非另有说明,著名 Symbol 的值被所有域(
在本规范内,一个著名 Symbol 值通过形如 form@@name 的形式被引用,这里的 “name” 是表
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
- 名称 - | -- [[Description]] - | -- 值和目的 - | -
---|---|---|
- @@hasInstance - | -- `"Symbol.hasInstance"` - | -- 确定构造函数对象是否识别对象为构造函数实例之一的方法。由 `instanceof` 运算符语义来调用。 - | -
- @@isConcatSpreadable - | -- `"Symbol.isConcatSpreadable"` - | -
- 一个Boolean值,如果为 true, 表示一个对象应该被 |
-
- @@iterator - | -- `"Symbol.iterator"` - | -- 返回一个对象的默认 Iterator 的方法。由 for-of 声明的语义来调用。 - | -
- @@match - | -- `"Symbol.match"` - | -
- 将字符串与正则表达式匹配的正则表达式方法。 由 |
-
- @@replace - | -- `"Symbol.replace"` - | -
- 替换匹配字符串子串的正则表达式方法。 由 |
-
- @@search - | -- `"Symbol.search"` - | -
- 一个正则表达式方法,它返回正则表达式匹配到在字符串中的索引。 由 |
-
- @@species - | -- `"Symbol.species"` - | -- 作为构造函数的函数值属性,用来创建派生对象。 - | -
- @@split - | -- `"Symbol.split"` - | -
- 一个正则表达式方法,它在正则表达式匹配的索引位置拆分字符串。 由 |
-
- @@toPrimitive - | -- `"Symbol.toPrimitive"` - | -- 将一个对象转换为相应原始值的方法。由抽象操作 ToPrimitive 调用。 - | -
- @@toStringTag - | -- `"Symbol.toStringTag"` - | -
- 一个字符串值属性,用于表示对象在创建时的默认字符串描述。通过内置方法 |
-
- @@unscopables - | -- `"Symbol.unscopables"` - | -- 一个对象值属性,其自身和继承的属性名是从相关对象非在 `with` 环境绑定的属性名。 - | -
+ Specification Name + | ++ [[Description]] + | ++ Value and Purpose + | +
+ @@hasInstance + | ++ `"Symbol.hasInstance"` + | ++ A method that determines if a constructor object recognizes an object as one of the constructor's instances. Called by the semantics of the `instanceof` operator. + | +
+ @@isConcatSpreadable + | ++ `"Symbol.isConcatSpreadable"` + | +
+ A Boolean valued property that if true indicates that an object should be flattened to its array elements by |
+
+ @@iterator + | ++ `"Symbol.iterator"` + | ++ A method that returns the default Iterator for an object. Called by the semantics of the for-of statement. + | +
+ @@match + | ++ `"Symbol.match"` + | +
+ A regular expression method that matches the regular expression against a string. Called by the |
+
+ @@replace + | ++ `"Symbol.replace"` + | +
+ A regular expression method that replaces matched substrings of a string. Called by the |
+
+ @@search + | ++ `"Symbol.search"` + | +
+ A regular expression method that returns the index within a string that matches the regular expression. Called by the |
+
+ @@species + | ++ `"Symbol.species"` + | ++ A function valued property that is the constructor function that is used to create derived objects. + | +
+ @@split + | ++ `"Symbol.split"` + | +
+ A regular expression method that splits a string at the indices that match the regular expression. Called by the |
+
+ @@toPrimitive + | ++ `"Symbol.toPrimitive"` + | ++ A method that converts an object to a corresponding primitive value. Called by the ToPrimitive abstract operation. + | +
+ @@toStringTag + | ++ `"Symbol.toStringTag"` + | +
+ A String valued property that is used in the creation of the default string description of an object. Accessed by the built-in method |
+
+ @@unscopables + | ++ `"Symbol.unscopables"` + | ++ An object valued property whose own and inherited property names are property names that are excluded from the `with` environment bindings of the associated object. + | +
Number 类型有 18437736874454810627 (即,
The Number type has exactly 18437736874454810627 (that is,
一个可被观察的 ArrayBuffer(见
The bit pattern that might be observed in an ArrayBuffer (see
还有另外两个特殊的值,叫做*正无穷*和*负无穷*。 为了简洁起见,这些值分别由符号 `+∞` 和 `-∞` 表示。(请注意,这两个无限数值由程序表达式 `+Infinity`(或 `Infinity` )和 `-Infinity` 产生。)
-除了 3 个特殊值,其他 18437736874454810624(即,
注意其中有一个*正零*,一个*负零*。为了简洁,他们也分别用 `+0` 和 `-0` 来说明。(注意这两个不同的 0,通过程序表达式 `+0`(或 `0`) 和 `-0` 产生。)
-18437736874454810622(即
其中 18428729675200069632 (即
There are two other special values, called *positive Infinity* and *negative Infinity*. For brevity, these values are also referred to for expository purposes by the symbols *+∞* and *-∞*, respectively. (Note that these two infinite Number values are produced by the program expressions `+Infinity` (or simply `Infinity`) and `-Infinity`.)
+The other 18437736874454810624 (that is,
Note that there is both a *positive zero* and a *negative zero*. For brevity, these values are also referred to for expository purposes by the symbols *+0* and *-0*, respectively. (Note that these two different zero Number values are produced by the program expressions `+0` (or simply `0`) and `-0`.)
+The 18437736874454810622 (that is,
18428729675200069632 (that is,
其中 _s_ 为 +1 或 -1,_m_ 是一个小于 253 大于等于 252 的整数,_e_ 是从 -1074 到 971 的整数。
-其余 9007199254740990 (即
where _s_ is +1 or -1, _m_ is a positive integer less than 253 but not less than 252, and _e_ is an integer ranging from -1074 to 971, inclusive.
+The remaining 9007199254740990 (that is,
其中 s 是 +1 或 -1 ,m 是小于 52 的正整数,e 是 -1074。
-注意,大小不大于 253 的所有正整数和负整数可以在数字类型中表示(实际上,整数 0 具有两个表示,`+0` 和 `-0`)。
-如果一个有限的数值非零且用来表达它(上文两种形式之一)的整数 m 是奇数,则该数值有奇数意义。否则,它有偶数意义。
-在本规范中,当 _x_ 表示一个精确的非零实数数学量(甚至可以是无理数,比如π)时,“the Number value for _x_” 意为,以下面的方式选择一个 Number 值。考虑 Number 类型中除了 `-0` 和两个被加入在数值类型中但不可呈现的值,21024 (
某些 ECMAScript 运算符仅处理闭区间
where _s_ is +1 or -1, _m_ is a positive integer less than 252, and _e_ is -1074.
+Note that all the positive and negative integers whose magnitude is no greater than 253 are representable in the Number type (indeed, the integer 0 has two representations, *+0* and *-0*).
+A finite number has an odd significand if it is nonzero and the integer _m_ used to express it (in one of the two forms shown above) is odd. Otherwise, it has an even significand.
+In this specification, the phrase “the Number value for _x_” where _x_ represents an exact real mathematical quantity (which might even be an irrational number such as π) means a Number value chosen in the following manner. Consider the set of all finite values of the Number type, with *-0* removed and with two additional values added to it that are not representable in the Number type, namely 21024 (which is
Some ECMAScript operators deal only with integers in specific ranges such as
对象在逻辑上是属性的集合。每个属性都是一个数据属性或一个访问器属性:
+An Object is logically a collection of properties. Each property is either a data property, or an accessor property:
属性使用 key 值来标识。一个属性的 key 值是 ECMAScript String 值或 Symbol 值。所有 String 值(包括空字符串) 和 Symbol 值作为属性的 key 都是有效的。一个属性的 key 为 String 值时,属性名称为属性的 key 。
-一个值为 `+0` 或者一个 ≤ 253-1 的整数作为属性 key 字符串值的整数索引是一个以典型的数字 String。 一个数组索引是范围在
属性的 key 用来访问属性以及其值。属性有两种访问方式:get 和 set ,分别对应值的检索和赋值。通过 get 和 set 可访问的属性既包括直接属于的自身属性,也包括通过继承关系由其它相关对象提供的继承属性。继承属性也可能是另一个对象的自身属性或者继承属性。对象的每个自身属性必须有一个与对象的其他自身属性 key 值不同 key 值。
-所有的对象都是逻辑上的属性集合,但是在用于访问和操纵它们的属性的语义中存在多种形式的对象。普通对象是对象的最常见形式,拥有默认的对象语义。奇异对象是指其属性语义与默认语义的各个方面都有区别的对象。
+Properties are identified using key values. A property key value is either an ECMAScript String value or a Symbol value. All String and Symbol values, including the empty string, are valid as property keys. A property name is a property key that is a String value.
+An integer index is a String-valued property key that is a canonical numeric String (see
Property keys are used to access properties and their values. There are two kinds of access for properties: get and set, corresponding to value retrieval and assignment, respectively. The properties accessible via get and set access includes both own properties that are a direct part of an object and inherited properties which are provided by another associated object via a property inheritance relationship. Inherited properties may be either own or inherited properties of the associated object. Each own property of an object must each have a key value that is distinct from the key values of the other own properties of that object.
+All objects are logically collections of properties, but there are multiple forms of objects that differ in their semantics for accessing and manipulating their properties. Ordinary objects are the most common form of objects and have the default object semantics. An exotic object is any form of object whose property semantics differ in any way from the default semantics.
在本规范中特性用来定义和解释对象属性的状态。数据属性关联表
Attributes are used in this specification to define and explain the state of Object properties. A data property associates a key value with the attributes listed in
- 特性名称 - | -- 值域 - | -- 描述 - | -
---|---|---|
- [[Value]] - | -- 任何 ECMAScript 语言类型 - | -- get 访问检索到的属性值 - | -
- [[Writable]] - | -- Boolean - | -- 如果为 *false*,尝试通过 [[Set]] 去改变属性的 [[Value]] 特性的 ECMAScript 代码将不会成功。 - | -
- [[Enumerable]] - | -- Boolean - | -
- 如果为 *true*, 这个属性被 for-in 枚举时将会是可枚举的(见 |
-
- [[Configurable]] - | -- Boolean - | -- 如果为 *false*,尝试删除这个属性,把这个属性改为访问器属性,或者改变它的的特性(除了修改 [[Value]],或修改 [[Writable]] 为 false 之外)都会失败。 - | -
+ Attribute Name + | ++ Value Domain + | ++ Description + | +
+ [[Value]] + | ++ Any ECMAScript language type + | ++ The value retrieved by a get access of the property. + | +
+ [[Writable]] + | ++ Boolean + | ++ If *false*, attempts by ECMAScript code to change the property's [[Value]] attribute using [[Set]] will not succeed. + | +
+ [[Enumerable]] + | ++ Boolean + | +
+ If *true*, the property will be enumerated by a for-in enumeration (see |
+
+ [[Configurable]] + | ++ Boolean + | ++ If *false*, attempts to delete the property, change the property to be an accessor property, or change its attributes (other than [[Value]], or changing [[Writable]] to *false*) will fail. + | +
- 访问器属性关联表
An accessor property associates a key value with the attributes listed in
- 特性名称 - | -- 值域 - | -- 描述 - | -
---|---|---|
- [[Get]] - | -- Object | Undefined - | -
- 如果这个值是一个对象,那么它必须是一个函数对象。在每次取值(get 访问该属性被执行)时,这个函数的内部 [[Call]] 方法( |
-
- [[Set]] - | -- Object | Undefined - | -
- 如果这个值是一个对象,那么它必须是一个函数对象。在每次赋值(set 访问该属性被执行)时,这个函数的内部 [[Call]] 方法( |
-
- [[Enumerable]] - | -- Boolean - | -
- 如果为 *true*,这个属性被 for-in 枚举时将会是可枚举的(见 |
-
- [[Configurable]] - | -- Boolean - | -- 如果为 *false*,任何尝试删除这个属性,把这个属性改为数据属性,或者改变它的其它特性的操作都会失败。 - | -
+ Attribute Name + | ++ Value Domain + | ++ Description + | +
+ [[Get]] + | ++ Object | Undefined + | +
+ If the value is an Object it must be a function object. The function's [[Call]] internal method ( |
+
+ [[Set]] + | ++ Object | Undefined + | +
+ If the value is an Object it must be a function object. The function's [[Call]] internal method ( |
+
+ [[Enumerable]] + | ++ Boolean + | +
+ If *true*, the property is to be enumerated by a for-in enumeration (see |
+
+ [[Configurable]] + | ++ Boolean + | ++ If *false*, attempts to delete the property, change the property to be a data property, or change its attributes will fail. + | +
如果一个属性的特性的初始值没有被本规范显式地指定的,那么使用在表
If the initial values of a property's attributes are not explicitly specified by this specification, the default value defined in
- 特性名 - | -- 默认值 - | -
---|---|
- [[Value]] - | -- *undefined* - | -
- [[Get]] - | -- *undefined* - | -
- [[Set]] - | -- *undefined* - | -
- [[Writable]] - | -- *false* - | -
- [[Enumerable]] - | -- *false* - | -
- [[Configurable]] - | -- *false* - | -
+ Attribute Name + | ++ Default Value + | +
+ [[Value]] + | ++ *undefined* + | +
+ [[Get]] + | ++ *undefined* + | +
+ [[Set]] + | ++ *undefined* + | +
+ [[Writable]] + | ++ *false* + | +
+ [[Enumerable]] + | ++ *false* + | +
+ [[Configurable]] + | ++ *false* + | +
在 ECMAScript 中,对象的实际语义是通过算法来调用内部方法指定的。在 ECMAScript 引擎中的每个对象都与一系列的定义它的运行时行为的内部方法相关联。这些内部方法不属于 ECMAScript 语言的一部分。本规范定义它们纯粹是为了说明目的。但是,在 ECMAScript 具体实现中的每个对象必须表现得与其相关关联的内部方法一致。其中确切的方式由实现者来决定。
-内部方法名称是多态的。这意味着当一个通用内部方法被调用的时候,不同的对象值可能会执行不同的算法。调用内部方法实际的对象是这个调用 “target”。如果在运行时,实现的算法尝试使用一个对象不支持的内部方法,抛出一个`TypeError`异常。
-内部槽对应于相关对象的内部状态,用于各种 ECMAScript 规范算法。内部槽不是对象的属性,也不会被继承。根据具体的内部槽规范,内部状态可能由任意 ECMAScript 语言类型的值或者指定的 ECMAScript 规范类型的值组成。除非另有指定,否则分配内部槽应作为创建一个对象的过程的部分,并且不应该动态地添加到对象上。除非另有指定,否则一个内部槽的初始值是 *undefined*。本规范内很多算法都会创建有内部槽的对象。然而,ECMAScript 语言不提供直接去访问一个对象内部槽的方法。
-本规范内的内部方法和内部槽使用闭合的双方括号 [[]] 来标识。
-表
表
The actual semantics of objects, in ECMAScript, are specified via algorithms called internal methods. Each object in an ECMAScript engine is associated with a set of internal methods that defines its runtime behaviour. These internal methods are not part of the ECMAScript language. They are defined by this specification purely for expository purposes. However, each object within an implementation of ECMAScript must behave as specified by the internal methods associated with it. The exact manner in which this is accomplished is determined by the implementation.
+Internal method names are polymorphic. This means that different object values may perform different algorithms when a common internal method name is invoked upon them. That actual object upon which an internal method is invoked is the “target” of the invocation. If, at runtime, the implementation of an algorithm attempts to use an internal method of an object that the object does not support, a *TypeError* exception is thrown.
+Internal slots correspond to internal state that is associated with objects and used by various ECMAScript specification algorithms. Internal slots are not object properties and they are not inherited. Depending upon the specific internal slot specification, such state may consist of values of any ECMAScript language type or of specific ECMAScript specification type values. Unless explicitly specified otherwise, internal slots are allocated as part of the process of creating an object and may not be dynamically added to an object. Unless specified otherwise, the initial value of an internal slot is the value *undefined*. Various algorithms within this specification create objects that have internal slots. However, the ECMAScript language provides no direct way to associate internal slots with an object.
+Internal methods and internal slots are identified within this specification using names enclosed in double square brackets [[ ]].
+The “Signature” column of
- Internal Method - | -- Signature - | -- Description - | -
---|---|---|
- [[GetPrototypeOf]] - | -- ( ) → Object | Null - | -- 确定为对象提供继承属性的对象。*null* 值表示没有继承属性。 - | -
- [[SetPrototypeOf]] - | -- (Object | Null) → Boolean - | -- 关联这个对象与提供继承属性的对象。传递 *null* 表示没有继承属性。返回 true 表示操作成功完成,返回 false 表示操作失败。 - | -
- [[IsExtensible]] - | -- ( ) → Boolean - | -- 决定是否允许添加额外的属性到这个对象上。 - | -
- [[PreventExtensions]] - | -- ( ) → Boolean - | -- 控制一个新的属性是否能加到这个对象上。返回 true 表示操作成功,返回 false 表示操作失败。 - | -
- [[GetOwnProperty]] - | -- (_propertyKey_) → Undefined | Property Descriptor - | -- 返回对象自身属性中 key 值为 _propertyKey_ 的属性的属性描述符,如果没有这个属性返回`undefined`。 - | -
- [[DefineOwnProperty]] - | -- (_propertyKey_, _PropertyDescriptor_) → Boolean - | -- 创建或者改变 key 值为 _propertyKey_ 的自身属性状态为 _PropertyDescriptor_。返回 true 表示属性被成功创建/更新,返回 false 表示属性不能被创建/更新。 - | -
- [[HasProperty]] - | -- (_propertyKey_) → Boolean - | -- 返回一个 Boolean 值,代表这个对象自身或者继承了一个 key 值为 _propertyKey_ 的属性。 - | -
- [[Get]] - | -- (_propertyKey_, _Receiver_) → any - | -- 返回这个对象里 key 值为 _propertyKey_ 的属性的值。如果必须运行一些的 ECMAScript 代码来检索这个属性值,_Receiver_ 就会作为解析代码时的 *this* 值。 - | -
- [[Set]] - | -- (_propertyKey_, _value_, _Receiver_) → Boolean - | -- 设置这个对象 key 值为 _propertyKey_ 的属性的值为 _value_。如果必须运行一些的 ECMAScript 代码来检索这个属性值,_Receiver_ 就会作为解析代码时的 *this* 值。返回 *true* 表示这个属性值已经设置,返回 *false* 表示不能被设置。 - | -
- [[Delete]] - | -- (_propertyKey_) → Boolean - | -- 移除这个对象 key 值为 _propertyKey_ 的自身属性。 如果这个属性没有被移除,仍然存在,则返回 *false*。 如果属性被移除,或不存在,则返回 *true*。 - | -
- [[OwnPropertyKeys]] - | -- ( ) → List of propertyKey - | -- 返回一个包含所有自身属性 key 值的 List。 - | -
+ Internal Method + | ++ Signature + | ++ Description + | +
+ [[GetPrototypeOf]] + | ++ ( ) → Object | Null + | ++ Determine the object that provides inherited properties for this object. A *null* value indicates that there are no inherited properties. + | +
+ [[SetPrototypeOf]] + | ++ (Object | Null) → Boolean + | ++ Associate this object with another object that provides inherited properties. Passing *null* indicates that there are no inherited properties. Returns *true* indicating that the operation was completed successfully or *false* indicating that the operation was not successful. + | +
+ [[IsExtensible]] + | ++ ( ) → Boolean + | ++ Determine whether it is permitted to add additional properties to this object. + | +
+ [[PreventExtensions]] + | ++ ( ) → Boolean + | ++ Control whether new properties may be added to this object. Returns *true* if the operation was successful or *false* if the operation was unsuccessful. + | +
+ [[GetOwnProperty]] + | ++ (_propertyKey_) → Undefined | Property Descriptor + | ++ Return a Property Descriptor for the own property of this object whose key is _propertyKey_, or *undefined* if no such property exists. + | +
+ [[DefineOwnProperty]] + | ++ (_propertyKey_, _PropertyDescriptor_) → Boolean + | ++ Create or alter the own property, whose key is _propertyKey_, to have the state described by _PropertyDescriptor_. Return *true* if that property was successfully created/updated or *false* if the property could not be created or updated. + | +
+ [[HasProperty]] + | ++ (_propertyKey_) → Boolean + | ++ Return a Boolean value indicating whether this object already has either an own or inherited property whose key is _propertyKey_. + | +
+ [[Get]] + | ++ (_propertyKey_, _Receiver_) → any + | ++ Return the value of the property whose key is _propertyKey_ from this object. If any ECMAScript code must be executed to retrieve the property value, _Receiver_ is used as the *this* value when evaluating the code. + | +
+ [[Set]] + | ++ (_propertyKey_, _value_, _Receiver_) → Boolean + | ++ Set the value of the property whose key is _propertyKey_ to _value_. If any ECMAScript code must be executed to set the property value, _Receiver_ is used as the *this* value when evaluating the code. Returns *true* if the property value was set or *false* if it could not be set. + | +
+ [[Delete]] + | ++ (_propertyKey_) → Boolean + | ++ Remove the own property whose key is _propertyKey_ from this object. Return *false* if the property was not deleted and is still present. Return *true* if the property was deleted or is not present. + | +
+ [[OwnPropertyKeys]] + | ++ ( ) → List of propertyKey + | ++ Return a List whose elements are all of the own property keys for the object. + | +
表
- Internal Method - | -- Signature - | -- Description - | -
---|---|---|
- [[Call]] - | -- (any, a List of any) → any - | -- 执行这个对象相关联的代码。通过一个函数表达式来调用。通过调用表达式,传递给内部函数的 arguments 为一个 *this* 值,和一个包含传递给函数的参数列表,实现该内部方法的对象是可调用的 - | -
- [[Construct]] - | -- (a List of any, Object) → Object - | -- 创建一个对象。通过 `new` 或者 `super` 操作符调用。这个内部方法的第一个参数是一个包含操作符的参数的列表。第二个参数是 `new` 操作符初始化时应用的对象。实现这个内部方法的对象被称为构造函数。一个函数对象不一定是构造函数,这样的非构造函数的函数对象没有 [[Construct]] 内部方法。 - | -
+ Internal Method + | ++ Signature + | ++ Description + | +
+ [[Call]] + | ++ (any, a List of any) → any + | ++ Executes code associated with this object. Invoked via a function call expression. The arguments to the internal method are a *this* value and a list containing the arguments passed to the function by a call expression. Objects that implement this internal method are callable. + | +
+ [[Construct]] + | ++ (a List of any, Object) → Object + | ++ Creates an object. Invoked via the `new` or `super` operators. The first argument to the internal method is a list containing the arguments of the operator. The second argument is the object to which the `new` operator was initially applied. Objects that implement this internal method are called constructors. A function object is not necessarily a constructor and such non-constructor function objects do not have a [[Construct]] internal method. + | +
这些普通对象和标准的怪异对象的基础内部方法语义在
The semantics of the essential internal methods for ordinary objects and standard exotic objects are specified in clause
ECMAScript 引擎中的内部方法必须符合以下指定的不变量列表。普通 ECMAScript 对象以及该规范中的标准怪异对象应保持这些不变量。ECMAScript Proxy 对象通过运行时检查 [[ProxyHandler]] 对象的陷阱调用结果的手段来保持这些不变量。
-任何实现提供的怪异对象必须也保持这些不变量。违反这些不变量可能会导致 ECMAScript 代码出现不可预料的行为以及安全问题。然而,对于造成内存安全的违反不变量行为的实现决不能妥协。
-实现不允许通过任何方式规避这些不变量。比如,通过提供替代接口来实现基本内部方法的功能而不强制执行他们的不变量。
-The Internal Methods of Objects of an ECMAScript engine must conform to the list of invariants specified below. Ordinary ECMAScript Objects as well as all standard exotic objects in this specification maintain these invariants. ECMAScript Proxy objects maintain these invariants by means of runtime checks on the result of traps invoked on the [[ProxyHandler]] object.
+Any implementation provided exotic objects must also maintain these invariants for those objects. Violation of these invariants may cause ECMAScript code to have unpredictable behaviour and create security issues. However, violation of these invariants must never compromise the memory safety of an implementation.
+An implementation must not allow these invariants to be circumvented in any manner such as by providing alternative interfaces that implement the functionality of the essential internal methods without enforcing their invariants.
+对象的原型链的长度应该是有限的(也就是说,从任意对象开始,递归地对结果应用 [[GetPrototypeOf]] 内置方法最终应该得到 null)。但是,如果原型链包含任何不使用 [[GetPrototypeOf]] 的普通对象定义的奇异对象,则此要求不强制作为对象级不变量。这样的环形原型链可能会在访问对象属性时产生无限循环。
+An object's prototype chain should have finite length (that is, starting from any object, recursively applying the [[GetPrototypeOf]] internal method to its result should eventually lead to the value null). However, this requirement is not enforceable as an object level invariant if the prototype chain includes any exotic objects that do not use the ordinary object definition of [[GetPrototypeOf]]. Such a circular prototype chain may result in infinite loops when accessing object properties.
作为第三个不变量的推论,如果一个属性被描述为一个数据属性并且随着时间它可能返回不同的值,那么 Desc.[[Writable]] 和 Desc.[[Configurable]] 特性必须是 true,虽然没有机制通过其它内置方法去改变暴露出来的值。
+As a consequence of the third invariant, if a property is described as a data property and it may return different values over time, then either or both of the Desc.[[Writable]] and Desc.[[Configurable]] attributes must be true even if no mechanism to change the value is exposed via the other internal methods.
- 如果 P 预先已经作为 target 的一个不可配置的自身属性被观察,那么 [[DefineOwnProperty]] 必须返回 false,除非满足一下条件之一: -
+[[DefineOwnProperty]] must return false if P has previously been observed as a non-configurable own property of the target, unless either:
著名内联函数是在该规范中通过算法明确引用的内置对象,这些内置对象通常有特定域的不变量。除非特别指出,每个内部对象在每个领域通常对应一系列相似对象的集合。
-在本规范中像 %name% 这样的引用意味着关联到相应的 name 域的内部对象。决定当前域以及他的内联函数在
Well-known intrinsics are built-in objects that are explicitly referenced by the algorithms of this specification and which usually have realm-specific identities. Unless otherwise specified each intrinsic object actually corresponds to a set of similar objects, one per realm.
+Within this specification a reference such as %name% means the intrinsic object, associated with the current realm, corresponding to the name. Determination of the current realm and its intrinsics is described in
- 内在名称 - | -- 全局名称 - | -- ECMAScript 语言关联 - | -
---|---|---|
- %Array% - | -- `Array` - | -
- `Array` 构造函数 ( |
-
- %ArrayBuffer% - | -- `ArrayBuffer` - | -
- `ArrayBuffer` 构造函数 ( |
-
- %ArrayBufferPrototype% - | -- `ArrayBuffer.prototype` - | -- %ArrayBuffer% `prototype` 数据属性的初始值 - | -
- %ArrayIteratorPrototype% - | -- | -
- 数组迭代器对象的原型 ( |
-
- %ArrayPrototype% - | -- `Array.prototype` - | -
- %Array% `prototype` 数据属性的初始值 ( |
-
- %ArrayProto_entries% - | -- `Array.prototype.entries` - | -
- %ArrayPrototype% `entries` 数据属性的初始值 ( |
-
- %ArrayProto_forEach% - | -- `Array.prototype.forEach` - | -
- %ArrayPrototype% `forEach` 数据属性的初始值 ( |
-
- %ArrayProto_keys% - | -- `Array.prototype.keys` - | -
- %ArrayPrototype% `keys` 数据属性的初始值 ( |
-
- %ArrayProto_values% - | -- `Array.prototype.values` - | -
- %ArrayPrototype% `values` 数据属性的初始值 ( |
-
- %AsyncFunction% - | -- | -
- async 函数对象的构造器 ( |
-
- %AsyncFunctionPrototype% - | -- | -- %AsyncFunction% `prototype` 数据属性的初始值 - | -
- %Atomics% - | -- `Atomics` - | -
- `Atomics` 对象 ( |
-
- %Boolean% - | -- `Boolean` - | -
- `Boolean` 构造函数 ( |
-
- %BooleanPrototype% - | -- `Boolean.prototype` - | -
- %Boolean% `prototype` 数据属性的初始值 ( |
-
- %DataView% - | -- `DataView` - | -
- `DataView` 构造函数 ( |
-
- %DataViewPrototype% - | -- `DataView.prototype` - | -- %DataView% `prototype` 数据属性的初始值 - | -
- %Date% - | -- `Date` - | -
- `Date` 构造函数 ( |
-
- %DatePrototype% - | -- `Date.prototype` - | -- %Date% `prototype` 数据属性的初始值 - | -
- %decodeURI% - | -- `decodeURI` - | -
- `decodeURI` 函数 ( |
-
- %decodeURIComponent% - | -- `decodeURIComponent` - | -
- `decodeURIComponent` 函数 ( |
-
- %encodeURI% - | -- `encodeURI` - | -
- `encodeURI` 函数 ( |
-
- %encodeURIComponent% - | -- `encodeURIComponent` - | -
- `encodeURIComponent` 函数 ( |
-
- %Error% - | -- `Error` - | -
- `Error` 构造函数 ( |
-
- %ErrorPrototype% - | -- `Error.prototype` - | -- %Error% `prototype` 数据属性的初始值 - | -
- %eval% - | -- `eval` - | -
- `eval` 函数 ( |
-
- %EvalError% - | -- `EvalError` - | -
- `EvalError` 构造函数 ( |
-
- %EvalErrorPrototype% - | -- `EvalError.prototype` - | -- %EvalError% `prototype` 属性的初始值 - | -
- %Float32Array% - | -- `Float32Array` - | -
- `Float32Array` 构造函数 ( |
-
- %Float32ArrayPrototype% - | -- `Float32Array.prototype` - | -- %Float32Array% `prototype` 数据属性的初始值 - | -
- %Float64Array% - | -- `Float64Array` - | -
- `Float64Array` 构造函数 ( |
-
- %Float64ArrayPrototype% - | -- `Float64Array.prototype` - | -- %Float64Array% `prototype` 数据属性的初始值 - | -
- %Function% - | -- `Function` - | -
- `Function` 构造函数 ( |
-
- %FunctionPrototype% - | -- `Function.prototype` - | -- %Function% `prototype` 数据属性的初始值 - | -
- %Generator% - | -- | -- %GeneratorFunction% `prototype` 属性的初始值 - | -
- %GeneratorFunction% - | -- | -
- generator 对象的构造函数 ( |
-
- %GeneratorPrototype% - | -- | -- %Generator% `prototype` 属性的初始值 - | -
- %Int8Array% - | -- `Int8Array` - | -
- `Int8Array` 构造函数 ( |
-
- %Int8ArrayPrototype% - | -- `Int8Array.prototype` - | -- %Int8Array% `prototype` 数据属性的初始值 - | -
- %Int16Array% - | -- `Int16Array` - | -
- `Int16Array` 构造函数 ( |
-
- %Int16ArrayPrototype% - | -- `Int16Array.prototype` - | -- %Int16Array% `prototype` 数据属性的初始值 - | -
- %Int32Array% - | -- `Int32Array` - | -
- `Int32Array` 构造函数 ( |
-
- %Int32ArrayPrototype% - | -- `Int32Array.prototype` - | -- %Int32Array% `prototype` 数据属性的初始值 - | -
- %isFinite% - | -- `isFinite` - | -
- `isFinite` 函数 ( |
-
- %isNaN% - | -- `isNaN` - | -
- `isNaN` 函数 ( |
-
- %IteratorPrototype% - | -- | -- 所有标准内置迭代对象间接继承的对象 - | -
- %JSON% - | -- `JSON` - | -
- `JSON` 对象 ( |
-
- %JSONParse% - | -- `JSON.parse` - | -- %JSON% `parse` 数据属性的初始值 - | -
- %Map% - | -- `Map` - | -
- `Map` 构造函数 ( |
-
- %MapIteratorPrototype% - | -- | -
- Map 迭代器对象的原型 ( |
-
- %MapPrototype% - | -- `Map.prototype` - | -- %Map% `prototype` 数据属性的初始值 - | -
- %Math% - | -- `Math` - | -
- `Math` 对象 ( |
-
- %Number% - | -- `Number` - | -
- `Number` 构造函数 ( |
-
- %NumberPrototype% - | -- `Number.prototype` - | -- %Number% `prototype` 属性的初始值 - | -
- %Object% - | -- `Object` - | -
- `Object` 构造函数 ( |
-
- %ObjectPrototype% - | -- `Object.prototype` - | -
- %Object%. ( |
-
- %ObjProto_toString% - | -- `Object.prototype.toString` - | -
- %ObjectPrototype% ( |
-
- %ObjProto_valueOf% - | -- `Object.prototype.valueOf` - | -
- %ObjectPrototype% ( |
-
- %parseFloat% - | -- `parseFloat` - | -
- `parseFloat` 函数 ( |
-
- %parseInt% - | -- `parseInt` - | -
- `parseInt` 函数 ( |
-
- %Promise% - | -- `Promise` - | -
- `Promise` 构造函数 ( |
-
- %PromisePrototype% - | -- `Promise.prototype` - | -- %Promise% `prototype` 数据属性的初始值 - | -
- %PromiseProto_then% - | -- `Promise.prototype.then` - | -
- The initial value of the `then` data property of %PromisePrototype% ( |
-
- %Promise_all% - | -- `Promise.all` - | -
- The initial value of the `all` data property of %Promise% ( |
-
- %Promise_reject% - | -- `Promise.reject` - | -
- The initial value of the `reject` data property of %Promise% ( |
-
- %Promise_resolve% - | -- `Promise.resolve` - | -
- The initial value of the `resolve` data property of %Promise% ( |
-
- %Proxy% - | -- `Proxy` - | -
- `Proxy` 构造函数 ( |
-
- %RangeError% - | -- `RangeError` - | -
- `RangeError` 构造函数 ( |
-
- %RangeErrorPrototype% - | -- `RangeError.prototype` - | -- %RangeError% `prototype` 属性的初始值 - | -
- %ReferenceError% - | -- `ReferenceError` - | -
- `ReferenceError` 构造函数 ( |
-
- %ReferenceErrorPrototype% - | -- `ReferenceError.prototype` - | -- %ReferenceError% `prototype` 属性的初始值 - | -
- %Reflect% - | -- `Reflect` - | -
- `Reflect` 对象 ( |
-
- %RegExp% - | -- `RegExp` - | -
- `RegExp` 构造函数 ( |
-
- %RegExpPrototype% - | -- `RegExp.prototype` - | -- %RegExp% `prototype` 数据属性的初始值 - | -
- %Set% - | -- `Set` - | -
- `Set` 构造函数 ( |
-
- %SetIteratorPrototype% - | -- | -
- Set 迭代器对象的原型 ( |
-
- %SetPrototype% - | -- `Set.prototype` - | -- %Set% `prototype` 数据属性的初始值 - | -
- %SharedArrayBuffer% - | -- `SharedArrayBuffer` - | -
- `SharedArrayBuffer` 构造函数 ( |
-
- %SharedArrayBufferPrototype% - | -- `SharedArrayBuffer.prototype` - | -- %SharedArrayBuffer% `prototype` 数据属性的初始值 - | -
- %String% - | -- `String` - | -
- `String` 构造函数 ( |
-
- %StringIteratorPrototype% - | -- | -
- String 迭代器对象的原型 ( |
-
- %StringPrototype% - | -- `String.prototype` - | -- %String% `prototype` 数据属性的初始值 - | -
- %Symbol% - | -- `Symbol` - | -
- `Symbol` 构造函数 ( |
-
- %SymbolPrototype% - | -- `Symbol.prototype` - | -
- %Symbol% `prototype` 数据属性的初始值 ( |
-
- %SyntaxError% - | -- `SyntaxError` - | -
- `SyntaxError` 构造函数 ( |
-
- %SyntaxErrorPrototype% - | -- `SyntaxError.prototype` - | -- %SyntaxError% `prototype` 属性的初始值 - | -
- %ThrowTypeError% - | -- | -- 一个函数对象,无条件的抛出一个新 %TypeError% 实例 - | -
- %TypedArray% - | -- | -
- 所有数组类型构造器的超类 ( |
-
- %TypedArrayPrototype% - | -- | -- %TypedArray% `prototype 属性的初始值 - | -
- %TypeError% - | -- `TypeError` - | -
- `TypeError` 构造函数 ( |
-
- %TypeErrorPrototype% - | -- `TypeError.prototype` - | -- %TypeError% `prototype` 属性的初始值 - | -
- %Uint8Array% - | -- `Uint8Array` - | -
- `Uint8Array` 构造函数 ( |
-
- %Uint8ArrayPrototype% - | -- `Uint8Array.prototype` - | -- %Uint8Array% `prototype` 数据属性的初始值 - | -
- %Uint8ClampedArray% - | -- `Uint8ClampedArray` - | -
- `Uint8ClampedArray` 构造函数 ( |
-
- %Uint8ClampedArrayPrototype% - | -- `Uint8ClampedArray.prototype` - | -- %Uint8ClampedArray% `prototype` 数据属性的初始值 - | -
- %Uint16Array% - | -- `Uint16Array` - | -
- `Uint16Array` 构造函数 ( |
-
- %Uint16ArrayPrototype% - | -- `Uint16Array.prototype` - | -- %Uint16Array% `prototype` 数据属性的初始值 - | -
- %Uint32Array% - | -- `Uint32Array` - | -
- `Uint32Array` 构造函数 ( |
-
- %Uint32ArrayPrototype% - | -- `Uint32Array.prototype` - | -- %Uint32Array% `prototype` 数据属性的初始值 - | -
- %URIError% - | -- `URIError` - | -
- `URIError` 构造函数 ( |
-
- %URIErrorPrototype% - | -- `URIError.prototype` - | -- %URIError% `prototype` 属性的初始值 - | -
- %WeakMap% - | -- `WeakMap` - | -
- `WeakMap` 构造函数 ( |
-
- %WeakMapPrototype% - | -- `WeakMap.prototype` - | -- %WeakMap% `prototype` 数据属性的初始值 - | -
- %WeakSet% - | -- `WeakSet` - | -
- `WeakSet` 构造函数 ( |
-
- %WeakSetPrototype% - | -- `WeakSet.prototype` - | -- %WeakSet% `prototype` 数据属性的初始值 - | -
+ Intrinsic Name + | ++ Global Name + | ++ ECMAScript Language Association + | +
+ %Array% + | ++ `Array` + | +
+ The `Array` constructor ( |
+
+ %ArrayBuffer% + | ++ `ArrayBuffer` + | +
+ The `ArrayBuffer` constructor ( |
+
+ %ArrayBufferPrototype% + | ++ `ArrayBuffer.prototype` + | ++ The initial value of the `prototype` data property of %ArrayBuffer%. + | +
+ %ArrayIteratorPrototype% + | ++ | +
+ The prototype of Array iterator objects ( |
+
+ %ArrayPrototype% + | ++ `Array.prototype` + | +
+ The initial value of the `prototype` data property of %Array% ( |
+
+ %ArrayProto_entries% + | ++ `Array.prototype.entries` + | +
+ The initial value of the `entries` data property of %ArrayPrototype% ( |
+
+ %ArrayProto_forEach% + | ++ `Array.prototype.forEach` + | +
+ The initial value of the `forEach` data property of %ArrayPrototype% ( |
+
+ %ArrayProto_keys% + | ++ `Array.prototype.keys` + | +
+ The initial value of the `keys` data property of %ArrayPrototype% ( |
+
+ %ArrayProto_values% + | ++ `Array.prototype.values` + | +
+ The initial value of the `values` data property of %ArrayPrototype% ( |
+
+ %AsyncFunction% + | ++ | +
+ The constructor of async function objects ( |
+
+ %AsyncFunctionPrototype% + | ++ | ++ The initial value of the `prototype` data property of %AsyncFunction% + | +
+ %Atomics% + | ++ `Atomics` + | +
+ The `Atomics` object ( |
+
+ %Boolean% + | ++ `Boolean` + | +
+ The `Boolean` constructor ( |
+
+ %BooleanPrototype% + | ++ `Boolean.prototype` + | +
+ The initial value of the `prototype` data property of %Boolean% ( |
+
+ %DataView% + | ++ `DataView` + | +
+ The `DataView` constructor ( |
+
+ %DataViewPrototype% + | ++ `DataView.prototype` + | ++ The initial value of the `prototype` data property of %DataView% + | +
+ %Date% + | ++ `Date` + | +
+ The `Date` constructor ( |
+
+ %DatePrototype% + | ++ `Date.prototype` + | ++ The initial value of the `prototype` data property of %Date%. + | +
+ %decodeURI% + | ++ `decodeURI` + | +
+ The `decodeURI` function ( |
+
+ %decodeURIComponent% + | ++ `decodeURIComponent` + | +
+ The `decodeURIComponent` function ( |
+
+ %encodeURI% + | ++ `encodeURI` + | +
+ The `encodeURI` function ( |
+
+ %encodeURIComponent% + | ++ `encodeURIComponent` + | +
+ The `encodeURIComponent` function ( |
+
+ %Error% + | ++ `Error` + | +
+ The `Error` constructor ( |
+
+ %ErrorPrototype% + | ++ `Error.prototype` + | ++ The initial value of the `prototype` data property of %Error% + | +
+ %eval% + | ++ `eval` + | +
+ The `eval` function ( |
+
+ %EvalError% + | ++ `EvalError` + | +
+ The `EvalError` constructor ( |
+
+ %EvalErrorPrototype% + | ++ `EvalError.prototype` + | ++ The initial value of the `prototype` data property of %EvalError% + | +
+ %Float32Array% + | ++ `Float32Array` + | +
+ The `Float32Array` constructor ( |
+
+ %Float32ArrayPrototype% + | ++ `Float32Array.prototype` + | ++ The initial value of the `prototype` data property of %Float32Array% + | +
+ %Float64Array% + | ++ `Float64Array` + | +
+ The `Float64Array` constructor ( |
+
+ %Float64ArrayPrototype% + | ++ `Float64Array.prototype` + | ++ The initial value of the `prototype` data property of %Float64Array% + | +
+ %Function% + | ++ `Function` + | +
+ The `Function` constructor ( |
+
+ %FunctionPrototype% + | ++ `Function.prototype` + | ++ The initial value of the `prototype` data property of %Function% + | +
+ %Generator% + | ++ | ++ The initial value of the `prototype` data property of %GeneratorFunction% + | +
+ %GeneratorFunction% + | ++ | +
+ The constructor of generator objects ( |
+
+ %GeneratorPrototype% + | ++ | ++ The initial value of the `prototype` data property of %Generator% + | +
+ %Int8Array% + | ++ `Int8Array` + | +
+ The `Int8Array` constructor ( |
+
+ %Int8ArrayPrototype% + | ++ `Int8Array.prototype` + | ++ The initial value of the `prototype` data property of %Int8Array% + | +
+ %Int16Array% + | ++ `Int16Array` + | +
+ The `Int16Array` constructor ( |
+
+ %Int16ArrayPrototype% + | ++ `Int16Array.prototype` + | ++ The initial value of the `prototype` data property of %Int16Array% + | +
+ %Int32Array% + | ++ `Int32Array` + | +
+ The `Int32Array` constructor ( |
+
+ %Int32ArrayPrototype% + | ++ `Int32Array.prototype` + | ++ The initial value of the `prototype` data property of %Int32Array% + | +
+ %isFinite% + | ++ `isFinite` + | +
+ The `isFinite` function ( |
+
+ %isNaN% + | ++ `isNaN` + | +
+ The `isNaN` function ( |
+
+ %IteratorPrototype% + | ++ | ++ An object that all standard built-in iterator objects indirectly inherit from + | +
+ %JSON% + | ++ `JSON` + | +
+ The `JSON` object ( |
+
+ %JSONParse% + | ++ `JSON.parse` + | ++ The initial value of the `parse` data property of %JSON% + | +
+ %Map% + | ++ `Map` + | +
+ The `Map` constructor ( |
+
+ %MapIteratorPrototype% + | ++ | +
+ The prototype of Map iterator objects ( |
+
+ %MapPrototype% + | ++ `Map.prototype` + | ++ The initial value of the `prototype` data property of %Map% + | +
+ %Math% + | ++ `Math` + | +
+ The `Math` object ( |
+
+ %Number% + | ++ `Number` + | +
+ The `Number` constructor ( |
+
+ %NumberPrototype% + | ++ `Number.prototype` + | ++ The initial value of the `prototype` data property of %Number% + | +
+ %Object% + | ++ `Object` + | +
+ The `Object` constructor ( |
+
+ %ObjectPrototype% + | ++ `Object.prototype` + | +
+ The initial value of the `prototype` data property of %Object% ( |
+
+ %ObjProto_toString% + | ++ `Object.prototype.toString` + | +
+ The initial value of the `toString` data property of %ObjectPrototype% ( |
+
+ %ObjProto_valueOf% + | ++ `Object.prototype.valueOf` + | +
+ The initial value of the `valueOf` data property of %ObjectPrototype% ( |
+
+ %parseFloat% + | ++ `parseFloat` + | +
+ The `parseFloat` function ( |
+
+ %parseInt% + | ++ `parseInt` + | +
+ The `parseInt` function ( |
+
+ %Promise% + | ++ `Promise` + | +
+ The `Promise` constructor ( |
+
+ %PromisePrototype% + | ++ `Promise.prototype` + | ++ The initial value of the `prototype` data property of %Promise% + | +
+ %PromiseProto_then% + | ++ `Promise.prototype.then` + | +
+ The initial value of the `then` data property of %PromisePrototype% ( |
+
+ %Promise_all% + | ++ `Promise.all` + | +
+ The initial value of the `all` data property of %Promise% ( |
+
+ %Promise_reject% + | ++ `Promise.reject` + | +
+ The initial value of the `reject` data property of %Promise% ( |
+
+ %Promise_resolve% + | ++ `Promise.resolve` + | +
+ The initial value of the `resolve` data property of %Promise% ( |
+
+ %Proxy% + | ++ `Proxy` + | +
+ The `Proxy` constructor ( |
+
+ %RangeError% + | ++ `RangeError` + | +
+ The `RangeError` constructor ( |
+
+ %RangeErrorPrototype% + | ++ `RangeError.prototype` + | ++ The initial value of the `prototype` data property of %RangeError% + | +
+ %ReferenceError% + | ++ `ReferenceError` + | +
+ The `ReferenceError` constructor ( |
+
+ %ReferenceErrorPrototype% + | ++ `ReferenceError.prototype` + | ++ The initial value of the `prototype` data property of %ReferenceError% + | +
+ %Reflect% + | ++ `Reflect` + | +
+ The `Reflect` object ( |
+
+ %RegExp% + | ++ `RegExp` + | +
+ The `RegExp` constructor ( |
+
+ %RegExpPrototype% + | ++ `RegExp.prototype` + | ++ The initial value of the `prototype` data property of %RegExp% + | +
+ %Set% + | ++ `Set` + | +
+ The `Set` constructor ( |
+
+ %SetIteratorPrototype% + | ++ | +
+ The prototype of Set iterator objects ( |
+
+ %SetPrototype% + | ++ `Set.prototype` + | ++ The initial value of the `prototype` data property of %Set% + | +
+ %SharedArrayBuffer% + | ++ `SharedArrayBuffer` + | +
+ The `SharedArrayBuffer` constructor ( |
+
+ %SharedArrayBufferPrototype% + | ++ `SharedArrayBuffer.prototype` + | ++ The initial value of the `prototype` data property of %SharedArrayBuffer% + | +
+ %String% + | ++ `String` + | +
+ The `String` constructor ( |
+
+ %StringIteratorPrototype% + | ++ | +
+ The prototype of String iterator objects ( |
+
+ %StringPrototype% + | ++ `String.prototype` + | ++ The initial value of the `prototype` data property of %String% + | +
+ %Symbol% + | ++ `Symbol` + | +
+ The `Symbol` constructor ( |
+
+ %SymbolPrototype% + | ++ `Symbol.prototype` + | +
+ The initial value of the `prototype` data property of %Symbol% ( |
+
+ %SyntaxError% + | ++ `SyntaxError` + | +
+ The `SyntaxError` constructor ( |
+
+ %SyntaxErrorPrototype% + | ++ `SyntaxError.prototype` + | ++ The initial value of the `prototype` data property of %SyntaxError% + | +
+ %ThrowTypeError% + | ++ | ++ A function object that unconditionally throws a new instance of %TypeError% + | +
+ %TypedArray% + | ++ | +
+ The super class of all typed Array constructors ( |
+
+ %TypedArrayPrototype% + | ++ | ++ The initial value of the `prototype` data property of %TypedArray% + | +
+ %TypeError% + | ++ `TypeError` + | +
+ The `TypeError` constructor ( |
+
+ %TypeErrorPrototype% + | ++ `TypeError.prototype` + | ++ The initial value of the `prototype` data property of %TypeError% + | +
+ %Uint8Array% + | ++ `Uint8Array` + | +
+ The `Uint8Array` constructor ( |
+
+ %Uint8ArrayPrototype% + | ++ `Uint8Array.prototype` + | ++ The initial value of the `prototype` data property of %Uint8Array% + | +
+ %Uint8ClampedArray% + | ++ `Uint8ClampedArray` + | +
+ The `Uint8ClampedArray` constructor ( |
+
+ %Uint8ClampedArrayPrototype% + | ++ `Uint8ClampedArray.prototype` + | ++ The initial value of the `prototype` data property of %Uint8ClampedArray% + | +
+ %Uint16Array% + | ++ `Uint16Array` + | +
+ The `Uint16Array` constructor ( |
+
+ %Uint16ArrayPrototype% + | ++ `Uint16Array.prototype` + | ++ The initial value of the `prototype` data property of %Uint16Array% + | +
+ %Uint32Array% + | ++ `Uint32Array` + | +
+ The `Uint32Array` constructor ( |
+
+ %Uint32ArrayPrototype% + | ++ `Uint32Array.prototype` + | ++ The initial value of the `prototype` data property of %Uint32Array% + | +
+ %URIError% + | ++ `URIError` + | +
+ The `URIError` constructor ( |
+
+ %URIErrorPrototype% + | ++ `URIError.prototype` + | ++ The initial value of the `prototype` data property of %URIError% + | +
+ %WeakMap% + | ++ `WeakMap` + | +
+ The `WeakMap` constructor ( |
+
+ %WeakMapPrototype% + | ++ `WeakMap.prototype` + | ++ The initial value of the `prototype` data property of %WeakMap% + | +
+ %WeakSet% + | ++ `WeakSet` + | +
+ The `WeakSet` constructor ( |
+
+ %WeakSetPrototype% + | ++ `WeakSet.prototype` + | ++ The initial value of the `prototype` data property of %WeakSet% + | +