1,es6语法
let list = documnet.getElementById('list');
let arr = Array.from(list);
console.log(list instanceof Array) //=====>false
console.log(arr instanceof Array) //=====>true
2,es5语法
[].slice.call(list): 根据伪数组生成对应的真数组
let list = documnet.getElementById('list');
let arr = Array.prototype.slice.call(list);
console.log(list instanceof Array) //=====>false
console.log(arr instanceof Array) //=====>true
说明:list是为元素,不可枚举,本身也没有slice方法,但是通过call,将调用slice的对象指向list后,list便可以使用slice,这就是call的强大之处。同时arr已经是真正的数组,可枚举。
注意:使用 Array.prototype.slice.call(list)要比使用[].slice.call(list),因为后者[ ]需要占内存,而且要通过原型链去查找slice方法,比较浪费内存。使用 Array.prototype.slice.call(list)比较好。