JavaScript中Array.prototype.slice.call(arguments)

今天看到这个用法的时候产生了疑问,

slice 方法可以用来将一个类数组(Array-like)对象/集合转换成一个数组。你只需将该方法绑定到这个对象上。

mdn上给出了一个例子:

function list() {

  return Array.prototype.slice.call(arguments);

}


var list1 = list(1, 2, 3); // [1, 2, 3]

我的问题是:

  • 平时更容易遇到fun.call (null, arguments)这样的用法,因为Function.prototype.call()的用法是

fun.call(thisArg[, arg1[, arg2[, ...]]])

所以遇到把Array.prototype.slice.call(arguments)这样的把arguments作为在函数运行时指定的this值感觉很别扭,总是想成Array.prototype.slice.call(null, arguments)这样的,又不知道这样为什么不对?

  • 除了Array.prototype.slice.call(arguments)这样的用法,那么Array.prototype上其他的方法是不是也可以这样使用呢?比如Array.prototype.splice.call(arguments,1)


翻过高山走不出你
浏览 528回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript