发现一个问题,如题,代码如下:var l = document.getElementsByClassName("list")[0].children;//我获取了页面上一个ul下的li集合 var b = Array.prototype.slice.call(l);//复制l类数组,并添加数组方法到新数组上(这是第一种方式,可以成功调用map方法) var arry = [...l];);//直接转换为数组(这是第二中方式,也能成功调用) var r = Array.prototype.map.call(l);//问题在这里了,不复制类数组,而直接添加数组方法,失败,并报错:“Uncaught TypeError: undefined is not a function at HTMLCollection.map (<anonymous>)“// var r = [].map.call(l);//这也是第三种方式的变形,同样失败 function add(that){ var s = that.innerHTML; that.innerHTML=s+1; } arry.map(add);//成功 b.map(add);//成功 r.map(add);//失败我的疑惑是为什么第三种方式失败了,可是我在:博客文章这篇文章上发现,貌似他同样也是用这种实现的啊:他的方式一:NodeList.prototype = Array.prototype;他的方式二:Array.prototype.map.call(links,function(e){}),如果确实是我的代码又问题,望大神帮忙指出并优化
添加回答
举报
0/150
提交
取消