javascript - 默认情况下数组没有原型(prototype)吗?

标签 javascript arrays methods prototypal-inheritance

我希望能够使用方法扩充 Array.prototype,然后在任何数组上调用它们:

>>> [1, 2, 3].customMethod();

但数组似乎没有原型(prototype)......?

>>> [1, 2, 3].prototype
undefined

我是不是漏掉了什么?


看来我的实际问题出在其他地方:调用 [1, 2, 3].customMethod() 有效,但调用 someDomElement.childNodes.customMethod() 失败。 childNodes 不是真正的数组吗?

childNodes.filter is not a function

最佳答案

prototype 是构造函数的属性,如 Array。所以 Array.prototype 存在,但 [1, 2, 3].prototype 不存在; Array 是一个构造函数,而 [1, 2, 3] 是一个数组。

您正在寻找 Object.getPrototypeOf([1, 2, 3])

Object.getPrototypeOf 是一个 ECMAScript 5 method ,因此可能不会出现在所有浏览器中。在这种情况下,您可以尝试访问 __proto__ 属性,即 [1, 2, 3].__proto__,它是 Object. getPrototypeOf 是新的标准版本,也可以使用an ES5 shim以确保凡是支持 __proto__ 的地方,都支持 Object.getPrototypeOf

关于javascript - 默认情况下数组没有原型(prototype)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6603313/

相关文章:

go - slice 与类型别名作为方法接收器

javascript - 用于从字符串中过滤关键字的正则表达式

javascript - 在浏览器中启用/禁用同时音轨

asp.net - 禁用 asp.net 中的复选框

c - 用重复数据初始化 C 数组

python - 比较大型数组集

c# - 通过反射在 C# 中获取委托(delegate)集合的所有具体实现

javascript - Electron 应用程序显示白屏但在 CentOS 8 上呈现

php - 如何在循环之前按键值对 json 字符串进行排序?

java - '这个方法必须返回 int 类型的结果' Java?