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。
答案 0 :(得分:0)
Array#copyWithin
方法可以使用Function#call
的任何对象调用,只要它具有length
属性和数字键即可。 MDN上的代码将Array#copyWithin
称为对象{ length: 5, 3: 1 }
,因为它是this
或实例值。它是该方法正在运行的“数组”。
数组只是一个对象,一个具有length
和数字有序属性的特殊对象。同样的事情发生在这里。他们通过传递带有length
和数字键的对象来“嘲弄”数组,而不是数组。
同样的操作发生是因为数组和{ length: 5, 3: 1 }
:
length
属性