在an answer中,@ Tushar提出了与以下内容相对应的语法。
Array.apply(null, Array(3).fill(10))
.map(function (item, index) {
return item + index;
});
我明白这里发生了什么,我很满意。但是,它让我有点不知道这个 null 值的参数看起来什么也没做。所以我开始研究。根据智慧on the web,它是对 this 的引用。现在,这给了我很少的清晰度,尽管将黄瓜,阵列和物体放入其中,但它并没有影响杰克,据我所知。事实上,我很好奇为什么以下内容不相同,更不用说了。
Array(3).fill(10)
.map(function (item, index) {
return item + index;
});
接下来,我读到了一些关于Cr IE不接受类似数组的对象的东西,它告诉我更少。此外,验证文章的年龄有点困难,因此其索赔的有效性难以评估。我得到了关于原型构造函数的讨论并放弃了,不确定我是否走在正确的道路上。
答案 0 :(得分:3)
apply
的第一个参数仅在您使用使用this
的函数时才重要。
运行以下代码段应该让它更清晰:
var o = {value: 1};
var fn = function(a) {
console.log(a + this.value);
}
value = "something else";
fn("an argument ");
fn.apply(o, [20]);
// the above prints:
// an argument something else
// 21
答案 1 :(得分:0)
Array(number)
创建一个给定大小的数组,但它不会填充任何数据点。因此,调用map
或fill
或其他任何内容都不会有用。
Array(item1, item2, item...)
创建一个数组,其中给定的项目作为数组的元素。您可以拨打map
,fill
,无论您想要什么,都可以使用。
那么如何使用它来创建一个可以调用map
的给定大小的数组?正是你看到的方式。
Array.apply(null,Array(3))
做的是创建一个大小为3
的未填充数组,然后将这3个未定义的项作为参数传递给Array
,从而导致
Array(undefined,undefined,undefined)
,它会为您提供map
pable数组。请注意,您在此处创建了两个数组,但Array(3)
在使用后会被丢弃。
那么为什么null
?那是因为在创建数组时,this
没有相关的地方。由于上下文无关紧要,您可以将任何您想要的内容作为上下文传递,并且运行得很好,但是最简单的理解是,如果传递上下文并不重要null
。