首页 > 其他分享 >一图搞懂原型和原型链

一图搞懂原型和原型链

时间:2024-06-05 20:31:32浏览次数:15  
标签:__ Object Person 实例 原型 搞懂 prototype 一图

请添加图片描述

  • 构造函数 Person,通过 new 实例化它的一个实例 person,实例 person 的原型就是构造函数 Personprototype 属性,即 Person.prototype
function Person() {} // 构造函数
var person = new Person() // 实例
// person的原型 === Person.prototype
  • 实例的原型 Person.prototype 通过 constructor 属性可以访问到构造函数 Person,也就是实例原型的 constructor 属性指向构造函数。
Person.prototype.constructor === Person
  • 实例 person 通过 __proto__ 属性可以访问到实例 person 的原型,也就是说实例的 __proto__ 属性指向实例的原型。Object.getPrototypeOf() 方法也可以返回指定对象的原型。
person.__proto__ === Person.prototype
Object.getPrototypeOf(person) === Person.prototype
  • 实例的原型 Person.prototype 本身是一个对象,也就是说它是内置构造函数 Object 的一个实例,那么 Person.prototype 也可以通过 __proto__ 属性或者 Object.getPrototypeOf() 方法访问到它的原型。
Person.prototype.__proto__ === Object.prototype
Object.getPrototypeOf(Person.prototype) === Object.prototype
  • Object.prototype 是原型链的终点,所以通过 __proto__ 属性或者 Object.getPrototypeOf() 方法访问它的原型时是 null。试想,如果 Object.prototype 也是一个对象,那么它就可以通过 __proto__ 属性或者 Object.getPrototypeOf() 方法访问到它的原型 Object.prototype,这样就变成了自己指向自己,陷入死循环了。Object.prototype 是由 JS 引擎创建的,而不是由构造函数 Object 创建的,没有继承任何属性。
Object.prototype.__proto__ === null
Object.getPrototypeOf(Object.prototype) === null

以上。

标签:__,Object,Person,实例,原型,搞懂,prototype,一图
From: https://blog.csdn.net/fehub/article/details/139335251

相关文章

  • 一文搞懂Kafka,在项目里面更加得心应手的使用
    1.kafka关键概念与术语1.1简单的例子说明kafka的使用场景Apachekafka是消息中间件的一种,我发现很多人不知道消息中间件是什么,在开始学习之前,我这边就先简单的解释一下什么是消息中间件,只是粗略的讲解,目前kafka已经可以做更多的事情。举个例子:生产者消费者,生产者生产鸡蛋......
  • 一文搞懂5种内存溢出案例,内含完整源码
    本文分享自华为云社区《10分钟搞懂各种内存溢出案例!!(含完整源码,建议收藏)》,作者:冰河。作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑。今天,我们就以Java代码的方式来列举几个典型的内存溢出案例,希......
  • 一图看懂网易数帆指标平台EasyMetrics
    ......
  • 一文直接搞懂原型和原型链
    前言复习原型和原型链的笔记;后续继续更新完善原型对象functionCourse(){};constcourse1=newCourse();constcourse2=newCourse()*1.Course-用来初始化创建对象的函数|类course1._proto_===Course.prototype*2.course1-根据原型创建出来的实......
  • 设计模式之原型模式
    问题背景在开发一个图形设计软件时,我们面临一个常见的需求:用户需要频繁地创建和编辑各种图形,如圆形、矩形和多边形。其中,许多图形元素在属性上非常相似,比如颜色、大小或样式可能只有细微的差别。用户希望能够快速复制一个已有图形,然后对其进行小的修改,而不是每次都从零开始......
  • Spring Bean多例作用域:原型模式的深度剖析与源码之旅
    1.引言在Spring框架中,Bean的多例作用域(prototype)提供了一种重要的实例化模式,它允许每次从Spring容器中请求Bean时都创建一个新的实例。这种模式在处理需要频繁创建和销毁实例的场景,以及不希望在不同请求或会话之间共享状态的Bean时特别有用。本文将通过深度剖析多例作用域......
  • 一文搞懂 MySQL 日志
    前言MySQL的日志记录了运行的各种信息,是MySQL事务、性能、数据容灾、异常排查等的基础。本文将介绍MySQL一些关键日志的作用和原理。MySQLInnoDB引擎重要的三个日志:一、binlog1.简介概述binlog记录DDL和DML语句,但不包括SELECT、SHOW 等语句,简单说只......
  • 一文搞懂C++继承、多继承、菱形继承、虚继承
    继承目录继承继承继承的访问权限子类赋值给父类赋值兼容规则“天然”的行为验证:1.其他权限继承能否支持赋值兼容规则2.是否"天然",有没有产生临时变量继承中的作用域继承的构造函数继承的拷贝构造继承的operator=继承的析构函数析构顺序析构的特殊处理继承中的static成员设计一......
  • 一文搞懂 MySQL 日志
    前言MySQL的日志记录了运行的各种信息,是MySQL事务、性能、数据容灾、异常排查等的基础。本文将介绍MySQL一些关键日志的作用和原理。MySQLInnoDB引擎重要的三个日志:日志说明redolog重做日志,保证事务的持久性undolog回滚日志,来保证事务的原子性binlo......
  • 一文搞懂:什么是数字化IT运维?(一)
    写在前面随着数字化转型在各个组织的落地,新技术、新应用不断上线,对于IT运维也提出新的挑战和需求。数字化时代,IT运维如何利用数字化能力,提升IT运维的效能?未来我们在建设IT运维时,该如何建立数字化IT运维,今天我们来讨论这个话题,帮助大家在未来规划数字化IT运维时能够有一定的参......