//下面是创建一个可迭代对象 var obj3 = { a: 1, b: 2, [Symbol.iterator](){}//里面是创建可迭代对象的代码 [].slice.apply(obj3)//[] 可见这个方法和可迭代对象无关
得出结论:slice方法的工作原理是根据上下文对象中的length属性建立一个length长度的数组 然后寻找对象中key值为数字的属性并且添加到数组里面 对于没有length属性的对象 默认length=undefined 返回的数组为空
可以推测map的工作原理和slice类似 大概是是根据上下文对象中的length属性建立一个length长度的数组 然后只遍历下标为数字的数组并且放到数组中对应下标的位置里 而且下标大于length的元素是不会被遍历的
得出结论:slice方法的工作原理是根据上下文对象中的length属性建立一个length长度的数组 然后寻找对象中key值为数字的属性并且添加到数组里面 对于没有length属性的对象 默认length=undefined 返回的数组为空
可以推测map的工作原理和slice类似 大概是是根据上下文对象中的length属性建立一个length长度的数组 然后只遍历下标为数字的数组并且放到数组中对应下标的位置里 而且下标大于length的元素是不会被遍历的
(1)定义
拥有 length 属性
若干索引属性的任意对象
(2)举例
NodeList
HTML Collections
字符串
arguments
$ 返回的 jQuery 原型对象
(3)类数组对象转数组
新建数组,遍历类数组对象,将每个元素放入新数组
Array.prototype.slice.call(ArrayLike) 或 [].slice.call(ArrayLike)
Array.from(ArrayLike)