js:为什么用Array.prototype.map.call代替map() ?
js: why use Array.prototype.map.call instead of map()?
这是从casperjs JS中摘录的:
function getPrices() {
var price = document.querySelectorAll('#InvoiceDetailGrid tbody');
return Array.prototype.map.call(price, function(elem) {
return elem.textContent;
});
}
为什么使用Array.prototype.map.call:不能简单地使用:price.map()
?
因为price
是一个类数组(NodeList)对象,而不是数组。
在Array.prototype.map
中,您使用Array的方法并使用类似数组的对象作为映射的对象。
为什么使用Array.prototype.map.call:不能简单地使用:
price.map () ?
因为您想调用作为第二个参数传入的函数,使用指定的this
。this
在你的情况下是第一个参数:price
, price
是一个类似数组的对象(它有一个长度属性),但它没有数组的方法。因此,在像对象这样的数组中调用map
函数的唯一方法是:
如果price是一个数组,则可以像通常那样调用map:
price.map(function(item){//...});
事实上,它不是一个数组路由到这个解决方案。
因为document.querySelectorAll
返回一个没有.map
方法的类数组对象。它不返回实际的数组。
相关文章:
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- 使用map来检查是否为真'不起作用
- 回调函数中传递参数的困难(Google Map API Markers)
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- 使用API在我的网站Google-Map上显示搜索地址的纬度和经度
- How to declare a Map containing certain properties with flow
- 如何将i18n.map转换为json对象
- 使用filter和map方法将数组中某些元素的第一个字母大写-JavaScript
- 节点中的Map Reduce
- 用Jquery map和moment js制作一个简单的时间线
- 谷歌地图API v3:Initial View is Fine,but Gray Box with No Map if
- JavaScript中的这个call()-方法是如何工作的
- _.map在返回时覆盖值
- 为什么使用Array.prototype.map.call而不是Array.map.call
- [].map.call() VS Array.prototype.map.call()?
- array.forEach.call vs array.map.call
- Rails和React: TypeError: Cannot call method 'map'的定义
- js:为什么用Array.prototype.map.call代替map() ?
- 为什么不't[“A”,“B”,“C”].map(String.protype.toLowerCase.call)
- 将function.prototype.call生成的函数作为参数传递时,Array.prototype.map不是函数