【问题标题】:why does array slice convert javascript arguments to array为什么数组切片将javascript参数转换为数组
【发布时间】:2012-12-28 22:30:37
【问题描述】:

为什么将切片方法应用于javascript arguments 值如下Array.prototype.slice.call(arguments) 将其转换为数组?如果在数组上使用 slice,而 arguments 不是数组,那么它是如何工作的? slice 应用于参数时是否只是一个特例?

【问题讨论】:

标签: javascript arrays arguments slice


【解决方案1】:

来自EcmaScript specification on Array.prototype.slice

注意 slice 函数是故意通用的;它不要求其 this 值是 Array 对象。因此,它可以转移到其他类型的对象中用作方法。 slice 函数能否成功应用于宿主对象取决于实现。

因此,slice 适用于每个具有length 属性的对象(如Arguments 对象)。即使对于那些不这样做的人,它也只会返回一个空数组。

【讨论】:

    【解决方案2】:

    是的,这是一个利用参数是可枚举列表这一事实的技巧。它也适用于其他可枚举列表(例如节点列表)。

    【讨论】:

      猜你喜欢
      • 2021-09-04
      • 1970-01-01
      • 2016-08-01
      • 2019-06-15
      • 1970-01-01
      • 2021-10-29
      • 2019-04-14
      • 2018-06-16
      相关资源
      最近更新 更多