【问题标题】:Why does Array.prototype return an empty array?为什么 Array.prototype 返回一个空数组?
【发布时间】:2012-08-26 17:44:14
【问题描述】:

这可能是一个愚蠢的问题,但是当我控制台输出Array.prototype 时,为什么会得到一个空数组?

我期待的是 push 和 pop 方法。

【问题讨论】:

  • 尝试Object.getOwnPropertyNames(Array.prototype); 获取它们。
  • @some // 这很有用!成功了!
  • 它是 ECMAScript 262-5 中的新方法之一。它返回对象上所有属性(可枚举或不可枚举)的数组。如果您只想要可枚举的属性,请使用 Object.keys(obj)MDC

标签: javascript arrays prototype


【解决方案1】:

“注意:Array.prototype 不是指单个数组,而是指 Array() 对象本身。” - http://www.w3schools.com/jsref/jsref_prototype_array.asp

【讨论】:

  • 但是我们从哪里获得 push 和 pop 方法呢?
  • @Moon 属性为still on the prototype,但一般不是enumerable
  • @Travis J // 这正是我的意思。我认为 push 和 pop 方法是在原型中定义的。不是吗?
  • @JonathanLonowski // 啊!这是有道理的。
  • 我们真的可以信任 w3schools 吗?
【解决方案2】:

原型的大多数内置方法都不是可枚举的,因此如果您使用for..in(您不应该在数组上使用,但这只是一个示例),它们将不会显示。由于它们不可枚举,因此如果您“将它们排除在外”,它们就不会出现。

【讨论】:

  • 或使用Object.getOwnPropertyNames(Array.prototype);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-25
  • 2022-01-09
相关资源
最近更新 更多