22.1 数组对象

22.1.3 数组原型对象上的属性

22.1.3.20 Array.prototype.push(...items)

注意1:参数是添加到数组的末尾,插入的顺序取决于参数的位置。这个函数的结果作为数组的新长度

当push方法以0个或多个参数调用时,执行步骤如下:

```

  1. Let O be ? ToObject(this value).

  2. Let len be ? ToLength(? Get(O, "length")).

  3. Let items be a List whose elements are, in left to right order, the arguments that were passed to this function invocation.

  4. Let argCount be the number of elements in items.

  5. If len + argCount > 2^53 - 1, throw a TypeError exception.

6 Repeat, while items is not empty

Remove the first element from items and let E be the value of the element.

Perform ? Set(O, ! ToString(len), E, true).

Increase len by 1.

  1. Perform ? Set(O, "length", len, true).

  2. Return len.

```

简单概括就是:循环遍历参数,把参数的值设置为O[length++]= v,length随着循环+1,返回值为length。

注意2:push方法故意设计成通用的,不要求当前的this是一个数组对象,所以他可以被其他类型的对象调用,因为push的最终操作是往this对象上添加属性

results matching ""

    No results matching ""