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()。我错过了某处的某些递归吗?
答案 0 :(得分:1)
该函数将提供的arguments对象转换为数组。
当调用函数的调用方法时,函数中的 this 将设置为提供的对象。另一种称呼方式是:
[].slice.call(arguments);
所以在slice方法中, this 不是表达式开头的empyt数组,而是 arguments 对象。
如果传递的对象不是本机对象(例如像NodeList或类似的DOM对象),这不是一个好主意,因为它会在使用中的某些浏览器上失败。此外,此不是“上下文”,它只是函数执行上下文的一个参数。