所有对象都有原型?我给MDN提了个issue!

起因

一直以来,原型和原型链都是前端面试必考知识点,所以关于原型和原型链到底是什么,我便不再多说。

此文的主要目的是弄清是不是所有对象都有原型?

先说结论:所有对象都有原型!

此时可能就有好学的小伙伴来反驳我了,Object.create(null) 可以创建无原型对象。你这一看就是基础不过关。稍安勿躁,这便是这篇文章的开始。

Object.create(null) 有没有原型

所以 Object.create(null) 创建的对象到底有没有原型?

有争论看文档!

在 mdn 的 Object.create(null) 词条描述中:明确指出了可以创建一个原型为 null 的对象。

所以按理说没这么多争议,应该是有原型的。

但是我看很多人都说 Object.create(null) 可以创建没原型的对象,这个也能在 mdn 的 继承和原型链 章节找到出处

那么到底哪边的说法是对的呢?我认为有原型是对的,因为在该文的开头就提到了所有对象都有原型:

有矛盾,那么会不会是英文翻译出错导致的问题?

我试着看了下英文文档:

可以看到英文文档也是如此,但是更多证据指向了 null 是 Object.create(null) 的原型。

给 MDN 提 issue

既然没办法得到准确的答案,那么就去求助吧!

在 mdn 的底部有个 - Report an issue,可以尝试询问 mdn 官方到底哪边是对的。

于是我就提了个 issue: github.com/mdn/content...

官方人员给出了回复:

并且在此时此刻,issue 已经被采纳修改!英文文档已经修改了!但是中文文档还没改!

结尾

至此,问题结束。得出一个相对客观的结论:所有对象都有原型!

为啥说相对客观呢,因为这个问题说到底是个定义的问题,mdn 算是比较官方的机构,所以我认为他说的是对的。 如果后续有更厉害更官方的大佬刊登出 "不是所有对象都有原型",那么我立场就会叛变^_^ 所以我只能说这是相对客观的结论。

但是结论是其次的,最重要的是解决问题的过程,从此文可以看出哪怕是官方也不一定是对的,要学会自己独立思考,还有最最最重要的是-------有问题多提问O(∩_∩)O

相关推荐
颜酱3 分钟前
开发工具链-构建、测试、代码质量校验常用包的比较
前端·javascript·node.js
mCell19 分钟前
[NOTE] JavaScript 中的稀疏数组、空槽和访问
javascript·面试·v8
柒儿吖24 分钟前
Electron for 鸿蒙PC - Native模块Mock与降级策略
javascript·electron·harmonyos
豆奶特浓636 分钟前
Java面试生死局:谢飞机遭遇在线教育场景,从JVM、Spring Security到AI Agent,他能飞吗?
java·jvm·微服务·ai·面试·spring security·分布式事务
颜酱40 分钟前
package.json 配置指南
前端·javascript·node.js
todoitbo1 小时前
基于 DevUI MateChat 搭建前端编程学习智能助手:从痛点到解决方案
前端·学习·ai·状态模式·devui·matechat
oden1 小时前
SEO听不懂?看完这篇你明天就能优化网站了
前端
IT_陈寒1 小时前
React性能优化:这5个Hooks技巧让我减少了40%的重新渲染
前端·人工智能·后端
Sunhen_Qiletian1 小时前
《Python开发之语言基础》第六集:操作文件
前端·数据库·python
珑墨1 小时前
【唯一随机数】如何用JavaScript的Set生成唯一的随机数?
开发语言·前端·javascript·ecmascript