【问题标题】:How does this [].fill.call({ length: 3 }, 4) example work?这个 [].fill.call({ length: 3 }, 4) 示例如何工作?
【发布时间】:2021-11-25 15:09:52
【问题描述】:

来源: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}

我认为“长度”作为对象中的键有点特殊,我找不到该断言的参考。 如果在空数组上使用 .fill ,它不会修改数组。 所以,我不明白我们为什么要找回这个对象。

【问题讨论】:

标签: javascript object call fill


【解决方案1】:

首先,让我们看看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}

【讨论】:

    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多