CNode

Array.slice.call的问题

问答
Ccaptainblue2013发布于10 年前最后回复10 年前4 回复4470 浏览0 收藏

Array.slice.call( [ 1 , 2 , 3 ],1 ) 和 [ 1 , 2 , 3 ].slice(1)

区别只是习惯不一样吗?

查看回复

回复 (4)

W
wssgcg1213#1·10 年前

前面少了个.prototype 如果对纯数组,是一样的,如果是类数组对象,只能前者,可以看一下ecma的定义,这个方法没有检测操作数组是否是一个真正数组,就像鸭式辩型里面说的一样 From Noder

F
FoghostCn#2·10 年前

Array.prototype.slice.call(obj)这时obj可以是类数组对象,如arguments [1,2,3].slice()是数组的实例方法,因为[1,2,3]是一个数组实例, 而arguments不是纯数组实例,也就是说arguments对象本身是没有slice方法的,只能用Array.prototype.slice.call(arguments)

M
magicdawn#3·10 年前

直接 [].slice.call

K
klesh#4·10 年前
引用 magicdawn直接 [].slice.call

@magicdawn [].slice 会创建一个新的数组实例 Array.prototype.slice.call 不会

参与回复
登录后即可参与回复。登录