首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个[].fill.call({ length: 3 },4)示例是如何工作的?

这个[].fill.call({ length: 3 },4)示例是如何工作的?
EN

Stack Overflow用户
提问于 2021-10-05 10:20:24
回答 1查看 43关注 0票数 1

来源: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,则不会修改该数组。所以,我不明白为什么我们要取回这个对象。

EN

回答 1

Stack Overflow用户

发布于 2021-10-05 13:26:42

首先,让我们研究一下call()方法。第一个参数{length: 3}是调用fill时用作this的值。

然后,让我们来看看fill()函数。当您查看解释该方法如何实现的Polyfill时,您将看到以下内容

代码语言:javascript
复制
var O = Object(this);
      // Steps 3-5.
var len = O.length >>> 0;

因此,它使用this对象的长度来决定如何填充数组。正如我们已经知道的,this现在引用对象{length: 3},因此len等于3。然后fill函数计算finalValue并向对象添加属性,然后返回对象

代码语言:javascript
复制
// Step 12.
while (k < finalValue) {
  O[k] = value;
  k++;
}

// Step 13.
return O;

所以,你得到了{0: 4, 1: 4, 2: 4, length: 3}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69448742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档