为什么 Array.prototype 的类型是数组, 而 Object.prototype 是对象

发布于 2022-09-06 19:43:58 字数 456 浏览 28 评论 0

看看下面:

Array.isArray(Array.prototype) //true.

当从chrome浏览器控制台打印出来后

[constructor: ƒ, concat: ƒ, pop: ƒ, push: ƒ, shift: ƒ, …]

但是却不能得到 Array.prototype[0], Array.prototype[1]... or Array.prototype.length

但是Object.prototype 却是

{constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ,
hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}

为什么啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

肩上的翅膀 2022-09-13 19:43:58
  1. Array.prototype类型为数组可能是Array.prototype上挂的方法都是Array类型适用的,而不能通过Object调用,为了保证这个一致性吧。
  2. 数组也是能添加非数字索引的属性的,至于lenght,你肯定能取到为0。
等数载,海棠开 2022-09-13 19:43:58

Array.prototype是一个数组,同时也是一个对象,意味着除了0,1,2。。。等数字索引外还可有有其他的键,它现在是一个空数组,当然没有0,1,2项了

梦初启 2022-09-13 19:43:58

请参考 Array.prototype - JavaScript | MDN 中这段话:

Array.prototype.constructor

所有的数组实例都继承了这个属性,它的值就是 Array,表明了所有的数组都是由 Array 构造出来的。

Array.prototype.length

上面说了,因为 Array.prototype 也是个数组,所以它也有 length 属性,这个值为 0,因为它是个空数组。
二智少女 2022-09-13 19:43:58

Array.prototype 打印得出的是它的构造函数 和原型,就是它的实例 空对象
如Number.prototype 是Number { 0 }
String.prototype 是 String { "" }
所有对象都是用.的方式去获取

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文