原型链的终点为什么是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.

相关推荐
西洼工作室4 分钟前
React TabBar切换与高亮实现
前端·javascript·react.js
belldeep6 分钟前
前端:Bootstrap 3.0 , 4.0 , 5.0 有什么差别?
前端·bootstrap·html
wuhen_n12 分钟前
Tool Schema 设计模式详解
前端·javascript·ai编程
码喽7号12 分钟前
Vue学习三:element-plus组件和FontAwesome图标组件
前端·vue.js·学习
2501_9159184114 分钟前
WebKit 抓包,WKWebView 请求的完整数据获取方法
android·前端·ios·小程序·uni-app·iphone·webkit
mcooiedo15 分钟前
Go-Gin Web 框架完整教程
前端·golang·gin
小陈工15 分钟前
Python Web开发入门(一):虚拟环境与依赖管理,从零搭建纯净开发环境
开发语言·前端·数据库·git·python·docker·开源
wuhen_n16 分钟前
排列算法完全指南 - 从全排列到N皇后,一套模板搞定所有排列问题
前端·javascript·算法
Cobyte16 分钟前
微信 ClawBot 接入本地 AI Agent 的实现原理
前端·agent·ai编程
@大迁世界16 分钟前
15.React 中的 Fragment 是什么?它出现的动机是什么?
前端·javascript·react.js·前端框架·ecmascript