如何理解有关Array.prototype.copyWithin()的示例?

时间:2017-05-26 13:46:56

标签: javascript arrays prototype

Mozilla Developer Network这是原始链接。

我正在从MDN学习Array.prototype。现在,我对一个关于Array.prototype.copyWithin()的例子感到困扰。请帮助我,谢谢你的帮助。

例如,我可以理解以下代码,并且正在运行的答案与我的答案相同。我认为第一个代码就像第二个代码一样。所以,我知道答案。

@Nested

但是,接下来的代码,我无法理解。

console.log( [].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4) ); // TypedArray => [4, 2, 3, 4, 5] console.log( new Int32Array([1, 2, 3, 4, 5]).copyWithin(0,3,4) ); // TypedArray => [4, 2, 3, 4, 5]

这些示例来自Mozilla Developer Network。

1 个答案:

答案 0 :(得分:0)

Array#copyWithin方法可以使用Function#call的任何对象调用,只要它具有length属性和数字键即可。 MDN上的代码将Array#copyWithin称为对象{ length: 5, 3: 1 },因为它是this或实例值。它是该方法正在运行的“数组”。

数组只是一个对象,一个具有length和数字有序属性的特殊对象。同样的事情发生在这里。他们通过传递带有length和数字键的对象来“嘲弄”数组,而不是数组。

同样的操作发生是因为数组和{ length: 5, 3: 1 }

  • 拥有length属性
  • 有数字键