我正在尝试理解使用Array.map()
var char_set = Array.apply(null, Array(256)).map(Boolean.prototype.valueOf, false);
上面的代码创建了一个包含0-255
索引的数组,每个值都设置为false
有人可以解释如何使用此map
方法创建此数组。 map
方法的语法是
arr.map(callback[, thisArg])
在我的情况下,thisArg
设置为false
?
答案 0 :(得分:4)
Array.apply(null, Array(256))
:将创建256个元素的数组,其中所有元素的值都未定义
map(…)
:用于将所有值初始化为false
map
中的第一个参数采用回调函数; Boolean.prototype.valueOf
是一个充当回调的函数。
true.valueOf()
返回true
,但必须使用thisArg调用它
|
---------- true是thisArg
false.valueOf()
返回false
,但必须使用thisArg调用它
|
---------- false是thisArg
当为数组中的每个元素调用map(Boolean.prototype.valueOf, false)
时,它会将false
作为this
传递给Boolean.prototype.valueOf
方法。它与调用false.valueOf()
一样好,因此它总是返回false
。
因此map(Boolean.prototype.valueOf, false)
相当于:
map(function(item){ return false.valueOf() });