【问题标题】:How is this function able to return a single object?这个函数如何能够返回单个对象?
【发布时间】:2013-10-14 01:01:30
【问题描述】:
function list() {
  return Array.prototype.slice.call(arguments, 0); //Here is my problem
}

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

我在网上找到了这个使用 slice 函数的示例,并且希望了解 call() 函数如何能够访问通过使用“arguments”属性传递给列表的每个项目。

我不明白将单个“参数”属性作为函数上下文传递给 slice() 的工作原理。我是否错过了某处正在进行的递归?

【问题讨论】:

标签: javascript arguments slice


【解决方案1】:

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

当调用函数的调用方法时,函数内的 this 被设置为提供的对象。另一种叫法是:

[].slice.call(arguments);

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

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

【讨论】:

    猜你喜欢
    • 2013-05-04
    • 2020-07-10
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2017-12-05
    相关资源
    最近更新 更多