来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#examples示例了解:[].fill.call({ length: 3 },4) //{0: 4,1: 4,2: 4,length: 3}
我认为'length‘作为对象中的键是很特别的,我找不到这个断言的引用。如果在空数组上使用.fill,则不会修改该数组。所以,我不明白为什么我们要取回这个对象。
发布于 2021-10-05 13:26:42
首先,让我们研究一下call()方法。第一个参数{length: 3}是调用fill时用作this的值。
然后,让我们来看看fill()函数。当您查看解释该方法如何实现的Polyfill时,您将看到以下内容
var O = Object(this);
// Steps 3-5.
var len = O.length >>> 0;因此,它使用this对象的长度来决定如何填充数组。正如我们已经知道的,this现在引用对象{length: 3},因此len等于3。然后fill函数计算finalValue并向对象添加属性,然后返回对象
// Step 12.
while (k < finalValue) {
O[k] = value;
k++;
}
// Step 13.
return O;所以,你得到了{0: 4, 1: 4, 2: 4, length: 3}
https://stackoverflow.com/questions/69448742
复制相似问题