为了在 NodeList 对象(类似数组)上执行数组方法,我们需要每次都对 Array.prototype 进行间接调用。
我们能做点什么让这node_list.slice(0,1)
成为可能吗?
由于 NodeList 继承了 Object.prototype 的方法,我实现了如下所示并且完美地工作node_list.slice(0,1)
Object.prototype.slice = function(a,b){ return Array.prototype.slice.call(this,a,b);}
在 Object.prototype 上实现 slice 有什么缺点吗?
调用 Array.prototype 的传统方式:
node_list
[<li> test_list1 </li>, <li> test_list2 </li>]
Object.prototype.toString.call(node_list)
"[object NodeList]"
var content = Array.prototype.slice.call(node_list,0,1)
content
[<li> test_list1 </li>]
Object.prototype.toString.call(content)
"[object Array]"