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

这篇具有很好参考价值的文章主要介绍了原型链的终点为什么是null?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

原型链的终点为什么是null?,原型模式,前端,javascript

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

原来:

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

当JavaScrip引]擎启动时,它会创建一些基础的对象和函数,其中之一就是Object构造函数。与此同时,“Object.prototype”对象也会被创建,并自动成为所有对象的最终原型。而object*这个构造函数的原型实际上就是Function.prototype”。这是因为在JavaScript中,函数也是对象,而~Object~实际上是一个函数。
但是object.prototype"不是通过object构造函数来创建的。它是JavaScrip引]警初始化时自动创建的基础对象之一。
总结一下,当我们说所有的对象的原型也是对象,这是不绝对的。不是所有的对象都是通过Object构造函数的~new操作来创建的。"Object.prototype”就是一个例外,它是由JavaScript引擎在初始化时自动创建的 .

所以,由于Object.prototype不是由谁创建的,而是js引擎初始化自动创建的,所以他没有继承到别的属性,更没有继承Object的prototype , 他指向null.文章来源地址https://www.toymoban.com/news/detail-687107.html

到了这里,关于原型链的终点为什么是null?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 0062__对象指针为NULL,为什么还是可以调用成员函数

    对象指针为NULL,为什么还是可以调用成员函数_空对象指针为什么能调用函数_一颗石头崽儿的博客-CSDN博客

    2024年02月10日
    浏览(42)
  • 为什么除了null外,任何元素不得添加到上<? extends T>

    使用泛型类型参数限定为 ? extends T 时,我们无法确定实际类型参数是什么。这意味着我们只能安全地读取该类型的数据,但不能写入除了 null 以外的任何元素。 下面是一个示例代码,说明为什么无法向 ? extends T 类型的集合中添加任何元素: 在上面的示例中,我们有一个 i

    2024年02月12日
    浏览(40)
  • 区块链的去中心化账本有和意义?为什么要哈希运算?如何保证数据不可篡改?

    1、中心化账本是什么? 在互联网的世界里,价值是用数字来呈现的。而数字文件是可以无限复制的,在互联网的世界数字具有易错、易改、易拷贝的特性,但是价值是不能复制的。为了解决这一难题发展为由一个中心化的机构(支付宝/微信支付/银联等)负责记账和记录账户余

    2023年04月23日
    浏览(54)
  • 《让云落地 云计算服务模式》第一章 [为什么是云计算,为什么是现在] 学习

    “时间会带来标准和最佳实践” 1.云计算的由来 云计算是从中央主机时代,向个人计算机时代诞生带来的分布式主从架构时代,以及企业能够通过覆盖全球的计算机网络联系世界的互联网时代的自然发展。 每一次新的技术革命都会伴随着阻力。早期的试用者和风险承受者会

    2024年04月28日
    浏览(41)
  • 为什么我不再推荐枚举策略模式

    一、为什么讲策略模式 二、经典策略模式 三、基于枚举的策略模式 四、基于工厂的策略模式 策略模式,应该是工作中比较常用的设计模式,调用方自己选择用哪一种策略完成对数据的操作,也就是“一个类的行为或其算法可以在运行时更改” 我个人的理解是 将一些除了过

    2024年02月07日
    浏览(42)
  • 前端为什么发请求没有携带cookie?

    在前端发送请求时,如果想要携带 cookie,通常只能携带存储在与请求域名相同路径的 cookie。这是由浏览器的同源策略所决定的。 同源策略要求请求的域名、协议和端口都必须一致,否则浏览器会限制跨域请求的权限。当浏览器发送跨域请求时,默认情况下不会自动携带 co

    2024年02月06日
    浏览(91)
  • 【软件工程_设计模式】——为什么要使用设计模式?

    什么是设计模式? 为什么要使用设计模式? 使用设计模式的原因如下: 提高 代码的可 读性和可维护性 :设计模式是前人根据经验总结出来的,使用设计模式,就相当于是站在了前人的肩膀上。熟悉设计模式的人应该能够很容易读懂运用设计模式编写的程序。 提高代码的 可

    2024年02月07日
    浏览(57)
  • ThinkPHP为什么用PHP+Swoole协程模式部署运行

    看很多ThinkPHP框架的程序商城等系统,现在都用PHP+Swoole协程来运行。在说Swoole前我们先了解下传统PHP模式。 互联网发展早期,大部分项目的业务逻辑并没有那么复杂,技术生态相对比较简单,也没有 Composer 这样的包管理系统,程序代码足够简单。大部分 PHP 项目没有框架,或

    2024年01月17日
    浏览(50)
  • DCL 单例模式设计为什么需要 volatile 修饰实例对象

     DCL 问题,是在基于双重检查锁设计下的单例模式中,存在不 完整对象的问题。而这个不完整对象的本质,是因为指令重排序导致的。 当我们使用 instance=new DCLExample()构建一个实例对象的时候,因为 new 这个操作并不是原子的。所以这段代码最终会被编译成 3 条指令: 为对象

    2024年02月08日
    浏览(47)
  • 为什么WebSocket需要前端心跳检测,有没有原生的检测机制?

    本文代码 github、gitee、npm 在web应用中,WebSocket是很常用的技术。通过浏览器的WebSocket构造函数就可以建立一个WebSocket连接。但当需要应用在具体项目中时,几乎都会进行心跳检测。 设置心跳检测,一是让通讯双方确认对方依旧活跃,二是浏览器端及时检测当前网络线路可用

    2024年02月03日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包