原型链的终点为什么是null?

一般来说,大家讲到原型链的时候到最后都会说:

所有的对象都是由Object构造函数所构造的,所以原型链的终点是Object.prototype.

而看过原型链完整图的应该都有印象,实际上真要讲终点的 话,其实原型链的终点是-null ! ! !

于是我们思考下面这个问题

那这样是不是就陷入了死循环了呢 ? 但是原型链上明确的指出,Object.prototype的__proto__属性是指向null的,那是不是意味着Object.prototype这个对象不是由Object构造函数所创建的实例 ?

原来:

Object.prototype是由JavaScript引擎创建的,而不是由Object构造函数创建的。

当JavaScrip引]擎启动时,它会创建一些基础的对象和函数,其中之一就是object构造函数。与此同时,"object.prototype"对象也会被创建,并自动成为所有对象的最终原型。而object*这个构造函数的原型实际上就是Function.prototype"。这是因为在JavaScript中,函数也是对象,而~object~实际上是一个函数。

但是object.prototype"不是通过object构造函数来创建的。它是JavaScrip引]警初始化时自动创建的基础对象之一。

总结一下,当我们说所有的原型都是对象,这是对的。但不是所有的对象都是通过其构造函数的~new操作来创建的。objectprototype"就是一个例外,它是由JavaScript引擎在初始化时自动创建的 .

所以,因为Object.prototype不是由谁创建的,而是js引擎初始化自动创建的,所以他没有继承到别的属性,更没有继承Object的prototype , 他指向null.

相关推荐
前端 贾公子5 分钟前
ElementUI 中 validateField 对部分表单字段数组进行校验时多次回调问题
前端·javascript·elementui
棒棒的唐5 分钟前
vue2 elementUI 登录页面实现回车提交登录的方法
前端·javascript·elementui
前端小万8 分钟前
一次紧急的现场性能问题排查
前端·性能优化
excel24 分钟前
为什么相同卷积代码在不同层学到的特征完全不同——基于 tfjs-node 猫图像识别示例的逐层解析
前端
知识分享小能手25 分钟前
React学习教程,从入门到精通,React 使用属性(Props)创建组件语法知识点与案例详解(15)
前端·javascript·vue.js·学习·react.js·前端框架·vue
用户214118326360227 分钟前
dify案例分享-免费玩转即梦 4.0 多图生成!Dify 工作流从搭建到使用全攻略,附案例效果
前端
CodeSheep27 分钟前
稚晖君又开始摇人了,有点猛啊!
前端·后端·程序员
JarvanMo29 分钟前
Flutter Web vs Mobile:主要区别以及如何调整你的UI
前端
IT_陈寒1 小时前
Java性能优化:从这8个关键指标开始,让你的应用提速50%
前端·人工智能·后端
天生我材必有用_吴用1 小时前
Vue3+Node.js 实现大文件上传:断点续传、秒传、分片上传完整教程(含源码)
前端