?uem/p1-90`Array 是奇异对象,会对某一类
Array 构造器:
Array(…) 等价于使用相同实参的对象创建表达式 new Array(…)。extends 子句的值。意图继承奇异 Array 行为的子类构造器必须super 调用,以初始化作为 Array 奇异对象的子类实例。不过,大多数 Array.prototype 方法都是泛型方法,并不依赖其 此函数在被调用时执行以下步骤:
Array 构造器:
此函数在被调用时执行以下步骤:
此方法是有意设计为泛型的工厂方法;它不要求其
此 async 函数在被调用时执行以下步骤:
此方法是有意设计为泛型的工厂方法;它不要求其
此函数在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法是有意设计为泛型的工厂方法;它不要求其
Array.prototype 的值是
此属性具有特性 { [[Writable]]:
Array[%Symbol.species%] 是
此函数的
Array 原型方法通常使用其
Array 原型对象:
Array 原型对象被指定为 Array 奇异对象,是为了确保与 ECMAScript 2015 规范之前创建的 ECMAScript 代码兼容。
此方法返回一个数组,其中
它在被调用时执行以下步骤:
此方法的
步骤
此方法有意设计为泛型的;它不要求其
The abstract operation IsConcatSpreadable takes argument obj (an ECMAScript language value) and returns either a normal completion containing a Boolean or a throw completion. It performs the following steps when called:
Array.prototype.constructor 的初始值是
end 实参是可选的。如果未提供,则使用
如果 target 为负,则将其视为
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
callback 应当是一个接受三个实参并返回可强制转换为 Boolean 值的值的函数。every 会按升序为数组中每个存在的元素调用一次 callback,直到找到一个 callback 返回 every 立即返回 every 返回
如果提供了 thisArg 参数,则它会被用作每次调用 callback 时的
callback 会以三个实参调用:元素的值、元素的索引,以及正在遍历的对象。
every 不会直接改变调用它的对象,但该对象可能会被对 callback 的调用改变。
every 处理的元素范围会在第一次调用 callback 之前确定。在对 every 的调用开始之后追加到数组中的元素,不会被 callback 访问。如果数组中已有元素被改变,传给 callback 的值将是 every 访问它们时的值;在对 every 的调用开始之后且被访问之前被删除的元素不会被访问。every 的行为类似于数学中的“对于所有”量词。特别是,对于空数组,它返回
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
start 实参是可选的。如果未提供,则使用
end 实参是可选的。如果未提供,则使用
如果 start 为负,则将其视为
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
callback 应当是一个接受三个实参并返回可强制转换为 Boolean 值的值的函数。filter 会按升序为数组中每个元素调用一次 callback,并构造一个
如果提供了 thisArg 参数,则它会被用作每次调用 callback 时的
callback 会以三个实参调用:元素的值、元素的索引,以及正在遍历的对象。
filter 不会直接改变调用它的对象,但该对象可能会被对 callback 的调用改变。
filter 处理的元素范围会在第一次调用 callback 之前确定。在对 filter 的调用开始之后追加到数组中的元素,不会被 callback 访问。如果数组中已有元素被改变,传给 callback 的值将是 filter 访问它们时的值;在对 filter 的调用开始之后且被访问之前被删除的元素不会被访问。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法会按索引升序为数组的每个元素调用一次 predicate,直到找到一个 predicate 返回会被强制转换为 find 立即返回该元素值。否则,find 返回
更多信息见
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法会按索引升序为数组的每个元素调用一次 predicate,直到找到一个 predicate 返回会被强制转换为 findIndex 立即返回该元素值的索引。否则,findIndex 返回 -1。
更多信息见
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法会按索引降序为数组的每个元素调用一次 predicate,直到找到一个 predicate 返回会被强制转换为 findLast 立即返回该元素值。否则,findLast 返回
更多信息见
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法会按索引降序为数组的每个元素调用一次 predicate,直到找到一个 predicate 返回会被强制转换为 findLastIndex 立即返回该元素值的索引。否则,findLastIndex 返回 -1。
更多信息见
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
The abstract operation FindViaPredicate takes arguments obj (an Object), length (a non-negative
obj 应当是
predicate 应当是一个函数。为数组的某个元素调用时,会传入三个实参:元素的值、元素的索引,以及正在遍历的对象。其返回值会被强制转换为 Boolean 值。
thisArg 会被用作每次调用 predicate 时的
此操作不会直接改变调用它的对象,但该对象可能会被对 predicate 的调用改变。
处理的元素范围会在第一次调用 predicate 之前、即遍历开始前确定。在此之后追加到数组中的元素不会被 predicate 访问。如果数组中已有元素被改变,传给 predicate 的值将是此操作访问它们时的值。在遍历开始之后且被访问之前被删除的元素仍会被访问,并且要么从原型查找,要么为
It performs the following steps when called:
此方法在被调用时执行以下步骤:
The abstract operation FlattenIntoArray takes arguments target (an Object), source (an Object), sourceLength (a non-negative
此方法在被调用时执行以下步骤:
callback 应当是一个接受三个实参的函数。forEach 会按升序为数组中每个存在的元素调用一次 callback。callback 只会对数组中实际存在的元素调用;不会对数组中缺失的元素调用。
如果提供了 thisArg 参数,则它会被用作每次调用 callback 时的
callback 会以三个实参调用:元素的值、元素的索引,以及正在遍历的对象。
forEach 不会直接改变调用它的对象,但该对象可能会被对 callback 的调用改变。
forEach 处理的元素范围会在第一次调用 callback 之前确定。在对 forEach 的调用开始之后追加到数组中的元素,不会被 callback 访问。如果数组中已有元素被改变,传给 callback 的值将是 forEach 访问它们时的值;在对 forEach 的调用开始之后且被访问之前被删除的元素不会被访问。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法使用
可选第二实参 fromIndex 默认为
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法有意在两个方面不同于类似的 indexOf 方法。首先,它使用
此方法使用
可选第二实参 fromIndex 默认为
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法将数组的元素转换为 String,然后将这些 String 连接起来,并由 separator 的出现分隔。如果未提供 separator,则使用单个逗号作为 separator。
它在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
此方法使用
可选第二实参 fromIndex 默认为数组长度减一(即搜索整个数组)。如果它大于或等于数组长度,则会搜索整个数组。如果它小于
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
callback 应当是一个接受三个实参的函数。map 会按升序为数组中每个元素调用一次 callback,并根据结果构造一个新的 Array。callback 只会对数组中实际存在的元素调用;不会对数组中缺失的元素调用。
如果提供了 thisArg 参数,则它会被用作每次调用 callback 时的
callback 会以三个实参调用:元素的值、元素的索引,以及正在遍历的对象。
map 不会直接改变调用它的对象,但该对象可能会被对 callback 的调用改变。
map 处理的元素范围会在第一次调用 callback 之前确定。在对 map 的调用开始之后追加到数组中的元素,不会被 callback 访问。如果数组中已有元素被改变,传给 callback 的值将是 map 访问它们时的值;在对 map 的调用开始之后且被访问之前被删除的元素不会被访问。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法移除数组的最后一个元素并返回它。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法按实参出现的顺序将它们追加到数组末尾。它返回数组的新长度。
此方法在被调用时执行以下步骤:
此方法的
此方法有意设计为泛型的;它不要求其
callback 应当是一个接受四个实参的函数。reduce 会按升序为数组中每个存在的元素调用一次 callback,除非提供了 initialValue,否则会跳过第一个元素。
callback 会以四个实参调用:previousValue(前一次调用 callback 所得的值)、currentValue(当前元素的值)、currentIndex,以及正在遍历的对象。首次调用 callback 时,previousValue 和 currentValue 可以是两组值之一。如果调用 reduce 时提供了 initialValue,则 previousValue 将是 initialValue,currentValue 将是数组中的第一个值。如果未提供 initialValue,则 previousValue 将是数组中的第一个值,currentValue 将是第二个值。如果数组不
reduce 不会直接改变调用它的对象,但该对象可能会被对 callback 的调用改变。
reduce 处理的元素范围会在第一次调用 callback 之前确定。在对 reduce 的调用开始之后追加到数组中的元素,不会被 callback 访问。如果数组中已有元素被改变,传给 callback 的值将是 reduce 访问它们时的值;在对 reduce 的调用开始之后且被访问之前被删除的元素不会被访问。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
callback 应当是一个接受四个实参的函数。reduceRight 会按降序为数组中每个存在的元素调用一次 callback,除非提供了 initialValue,否则会跳过第一次调用。
callback 会以四个实参调用:previousValue(前一次调用 callback 所得的值)、currentValue(当前元素的值)、currentIndex,以及正在遍历的对象。首次调用该函数时,previousValue 和 currentValue 可以是两组值之一。如果调用 reduceRight 时提供了 initialValue,则 previousValue 将是 initialValue,currentValue 将是数组中的最后一个值。如果未提供 initialValue,则 previousValue 将是数组中的最后一个值,currentValue 将是倒数第二个值。如果数组不
reduceRight 不会直接改变调用它的对象,但该对象可能会被对 callback 的调用改变。
reduceRight 处理的元素范围会在第一次调用 callback 之前确定。在对 reduceRight 的调用开始之后追加到数组中的元素,不会被 callback 访问。如果数组中已有元素被 callback 改变,传给 callback 的值将是 reduceRight 访问它们时的值;在对 reduceRight 的调用开始之后且被访问之前被删除的元素不会被访问。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法重新排列数组元素,以反转它们的顺序。它返回反转后的数组。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法移除数组的第一个元素并返回它。
它在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法返回一个数组,其中
它在被调用时执行以下步骤:
步骤
此方法有意设计为泛型的;它不要求其
callback 应当是一个接受三个实参并返回可强制转换为 Boolean 值的值的函数。some 会按升序为数组中每个存在的元素调用一次 callback,直到找到一个 callback 返回 some 立即返回 some 返回
如果提供了 thisArg 参数,则它会被用作每次调用 callback 时的
callback 会以三个实参调用:元素的值、元素的索引,以及正在遍历的对象。
some 不会直接改变调用它的对象,但该对象可能会被对 callback 的调用改变。
some 处理的元素范围会在第一次调用 callback 之前确定。在对 some 的调用开始之后追加到数组中的元素,不会被 callback 访问。如果数组中已有元素被改变,传给 callback 的值将是 some 访问它们时的值;在对 some 的调用开始之后且被访问之前被删除的元素不会被访问。some 的行为类似于数学中的“存在”量词。特别是,对于空数组,它返回
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法对该数组的元素排序。如果 comparator 不是
它在被调用时执行以下步骤:
由于不存在的属性值总是比较为大于
此方法有意设计为泛型的;它不要求其
The abstract operation SortIndexedProperties takes arguments obj (an Object), length (a non-negative
排序顺序是上述算法的步骤
除非
这里,记法
如果对集合 values 中所有值 a、b 和 c(可以是同一个值)都满足以下要求,则
上述条件是确保 comparator 将集合 values 划分为等价类,且这些等价类被全序排列的充要条件。
The abstract operation CompareArrayElements takes arguments x (an ECMAScript language value), y (an ECMAScript language value), and comparator (a function object or
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
ECMA-402 第一版没有
此方法可选参数的含义在 ECMA-402 规范中定义;不
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法把实参前置到数组开头,使它们在数组中的顺序与它们在实参
它在被调用时执行以下步骤:
此方法的
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此属性具有特性 { [[Writable]]:
Array 实例是 Array 奇异对象,并具有为这类对象指定的内部方法。Array 实例继承自
Array 实例具有一个
Array 实例的
Array Iterator 是表示对某个特定 Array 实例对象进行特定迭代的对象。Array Iterator 对象没有具名构造器。相反,Array Iterator 对象通过调用 Array 实例对象的某些方法创建。
The abstract operation CreateArrayIterator takes arguments array (an Object) and kind (
%ArrayIteratorPrototype% 对象:
此属性具有特性 { [[Writable]]:
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[IteratedArrayLike]] |
an Object or |
正在迭代的 |
| [[ArrayLikeNextIndex]] |
a non-negative |
此迭代器将要检查的下一个元素的 |
| [[ArrayLikeIterationKind]] |
|
标识迭代的每个元素返回什么内容的值。 |
TypedArray 呈现底层二进制数据缓冲区(
| 构造器名称和固有对象 | 元素类型 | 元素大小 | 转换操作 | 描述 |
|---|---|---|---|---|
|
Int8Array %Int8Array% |
|
1 |
|
8 位二进制补码有符号整数 |
|
Uint8Array %Uint8Array% |
|
1 |
|
8 位无符号整数 |
|
Uint8ClampedArray %Uint8ClampedArray% |
|
1 |
|
8 位无符号整数(夹取转换) |
|
Int16Array %Int16Array% |
|
2 |
|
16 位二进制补码有符号整数 |
|
Uint16Array %Uint16Array% |
|
2 |
|
16 位无符号整数 |
|
Int32Array %Int32Array% |
|
4 |
|
32 位二进制补码有符号整数 |
|
Uint32Array %Uint32Array% |
|
4 |
|
32 位无符号整数 |
|
BigInt64Array %BigInt64Array% |
|
8 |
|
64 位二进制补码有符号整数 |
|
BigUint64Array %BigUint64Array% |
|
8 |
|
64 位无符号整数 |
|
Float16Array %Float16Array% |
|
2 | 16 位 IEEE 浮点数 | |
|
Float32Array %Float32Array% |
|
4 | 32 位 IEEE 浮点数 | |
|
Float64Array %Float64Array% |
|
8 | 64 位 IEEE 浮点数 |
在下面的定义中,对 TypedArray 的引用应替换为上表中的相应构造器名称。
%TypedArray% 固有对象:
super 调用。此函数在被调用时执行以下步骤:
此函数的
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
.prototype 的初始值是
此属性具有特性 { [[Writable]]:
[%Symbol.species%] 是
此函数的
%TypedArray% 原型对象:
.prototype.buffer 是
.prototype.byteLength 是
.prototype.byteOffset 是
.prototype.constructor 的初始值是
此方法的实参解释和使用方式与 Array.prototype.copyWithin 相同。
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法的实参解释和使用方式与 Array.prototype.every 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.fill 相同。
此方法在被调用时执行以下步骤:
此方法的实参解释和使用方式与 Array.prototype.filter 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.find 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.findIndex 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.findLast 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.findLastIndex 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.forEach 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.includes 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.indexOf 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.join 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法在被调用时执行以下步骤:
此方法的实参解释和使用方式与 Array.prototype.lastIndexOf 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
.prototype.length 是
此函数不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.map 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.reduce 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.reduceRight 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.reverse 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法会在此 TypedArray 中设置多个值,并从 source 读取这些值。细节会根据 source 的类型而不同。可选的 offset 值指示在此 TypedArray 中写入值的第一个元素索引。如果省略,则假定为 0。
它在被调用时执行以下步骤:
此方法不是泛型的。
The abstract operation SetTypedArrayFromArrayLike takes arguments target (a
The abstract operation SetTypedArrayFromTypedArray takes arguments target (a
此方法的实参解释和使用方式与 Array.prototype.slice 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
此方法的实参解释和使用方式与 Array.prototype.some 相同。
此方法在被调用时执行以下步骤:
此方法不是泛型的。
这是一个不同的方法;除下文所述外,它实现与 Array.prototype.sort 相同的要求。此方法的实现可以利用这样的知识进行优化:
此方法不是泛型的。
它在被调用时执行以下步骤:
由于
此方法返回一个新的 TypedArray,其元素类型是此 TypedArray 的元素类型,其 ArrayBuffer 是此 TypedArray 的 ArrayBuffer,并引用从 start(
它在被调用时执行以下步骤:
此方法不是泛型的。
这是一个不同的方法,它实现与 Array.prototype.toLocaleString 相同的算法,不同之处在于调用
此方法不是泛型的。在对算法求值之前,以
如果 ECMAScript 实现Array.prototype.toLocaleString 算法。
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
.prototype[%Symbol.toStringTag%] 是
此属性具有特性 { [[Enumerable]]:
此函数的
The abstract operation TypedArrayCreateFromConstructor takes arguments ctor (a constructor) and argList (a List of
The abstract operation TypedArrayCreateSameType takes arguments exemplar (a
The abstract operation TypedArraySpeciesCreate takes arguments exemplar (a
The abstract operation ValidateTypedArray takes arguments obj (an ECMAScript language value) and order (
The abstract operation ValidateTypedArrayBounds takes arguments ta (a
The abstract operation TypedArrayElementSize takes argument obj (a
The abstract operation TypedArrayElementType takes argument obj (a
The abstract operation CompareTypedArrayElements takes arguments x (a Number or a BigInt), y (a Number or a BigInt), and comparator (a function object or
每个 TypedArray 构造器:
extends 子句的值。打算继承指定 TypedArray 行为的子类super 调用,以创建并初始化子类实例,使其具备支持 .prototype 的内置方法所必需的内部状态。每个 TypedArray 构造器在被调用时执行以下步骤:
"%TypedArray.prototype%"。The abstract operation AllocateTypedArray takes arguments ctorName (a String which is the name of a
The abstract operation InitializeTypedArrayFromTypedArray takes arguments obj (a
The abstract operation InitializeTypedArrayFromArrayBuffer takes arguments obj (a
The abstract operation InitializeTypedArrayFromList takes arguments obj (a
The abstract operation InitializeTypedArrayFromArrayLike takes arguments obj (a
The abstract operation AllocateTypedArrayBuffer takes arguments obj (a
每个 TypedArray 构造器:
TypedArray.BYTES_PER_ELEMENT 的值是
此属性具有特性 { [[Writable]]:
TypedArray.prototype 的初始值是对应的 TypedArray 原型固有对象(
此属性具有特性 { [[Writable]]:
每个 TypedArray 原型对象:
TypedArray.prototype.BYTES_PER_ELEMENT 的值是
此属性具有特性 { [[Writable]]:
给定 TypedArray 构造器的原型的
TypedArray 实例是
Uint8Array 是上文所述 TypedArray 的一种特定类型。此外,Uint8Array 构造器(
The abstract operation ValidateUint8Array takes argument ta (an ECMAScript language value) and returns either a normal completion containing
The abstract operation GetUint8ArrayBytes takes argument ta (a Uint8Array) and returns either a normal completion containing a List of
The abstract operation SetUint8ArrayBytes takes arguments into (a Uint8Array) and bytes (a List of
The abstract operation SkipAsciiWhitespace takes arguments string (a String) and index (a non-negative
The abstract operation DecodeFinalBase64Chunk takes arguments chunk (a String of length 2 or 3) and throwOnExtraBits (a Boolean) and returns either a normal completion containing a List of
The abstract operation DecodeFullLengthBase64Chunk takes argument chunk (a String of length 4) and returns a List of
标准 base64 字母表是
The abstract operation FromBase64 takes arguments string (a String), alphabet (
The abstract operation FromHex takes argument string (a String) and optional argument maxLength (a non-negative