Array.slice.call的问题
Array.slice.call( [ 1 , 2 , 3 ],1 ) 和 [ 1 , 2 , 3 ].slice(1)
区别只是习惯不一样吗?
4 回复
前面少了个.prototype 如果对纯数组,是一样的,如果是类数组对象,只能前者,可以看一下ecma的定义,这个方法没有检测操作数组是否是一个真正数组,就像鸭式辩型里面说的一样 From Noder
是Array.prototype.slice.call(obj)
这时obj可以是类数组对象,如arguments
[1,2,3].slice()
是数组的实例方法,因为[1,2,3]
是一个数组实例,
而arguments
不是纯数组实例,也就是说arguments
对象本身是没有slice
方法的,只能用Array.prototype.slice.call(arguments)
直接 [].slice.call
@magicdawn [].slice 会创建一个新的数组实例 Array.prototype.slice.call 不会