该函数如何返回单个对象?

时间:2013-10-14 01:01:31

标签: javascript arguments slice

function list() {
  return Array.prototype.slice.call(arguments, 0); //Here is my problem
}

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

我发现了这个在线使用切片函数的例子,并希望了解call()函数如何能够访问通过使用“arguments”属性传递给列表的每个项目。

我不明白如何将单个“arguments”属性作为函数上下文传递给slice()。我错过了某处的某些递归吗?

1 个答案:

答案 0 :(得分:1)

该函数将提供的arguments对象转换为数组。

当调用函数的调用方法时,函数中的 this 将设置为提供的对象。另一种称呼方式是:

[].slice.call(arguments);

所以在slice方法中, this 不是表达式开头的empyt数组,而是 arguments 对象。

如果传递的对象不是本机对象(例如像NodeList或类似的DOM对象),这不是一个好主意,因为它会在使用中的某些浏览器上失败。此外,不是“上下文”,它只是函数执行上下文的一个参数。