图解原型和原型链

图解原型和原型链前言知识 结论 原型 把一个函数称为类的话 原型就是每个类都有的属性 作用 给这类添加属性 分为两类 显式原型 prototype 和隐式原型 proto 所有函数对象 Function 都有显式原型 所有对象 如 Object Function Array 等对象 都有隐式原型原型链 本质是链表 proto 相当于链表的指针 指向下一个对象 每个对象都有 proto 属性 它指向构造函数的 prototype 属性 构造函数的 prototype 属性的 proto 属性

前言知识、结论:

原型:

  • 把一个函数称为类的话,原型就是每个类都有的属性
  • 作用:给这类添加属性
  • 分为两类:显式原型prototype 和 隐式原型 __proto__
  • 所有函数对象(Function)都有显式原型
  • 所有对象(如Object、Function、Array等对象)都有隐式原型

原型链:

  • 本质是链表,__proto__相当于链表的指针,指向下一个对象
  • 每个对象都有__proto__属性,它指向构造函数的prototype属性,构造函数的prototype属性的__proto__属性指向下一个对象的peototype属性,就这样一层层网上查找,直到找到最顶层的对象Object.prototype。这个过程就是原型链
  • 函数的顶层对象是Function.prototype
  • 对象的顶层对象是Object.prototype

new 的过程:

  • 使用 new 关键字,首先创建了一个空的对象 
  • 这个空的对象有__proto__属性,指向的是它的构造函数的prototype属性
  • 将this指向的是new 出来的实例对象 
  • 执行构造函数里面的语句
  • 最后返回新的对象,如果构造函数有return 值,就返回return值

图解原型链:

图解原型和原型链


原型链相关应用:

  • instanceof:在原型链上一层层查找,如果在原型链上有该对象,返回true
  • 继承:
    • ES6:extends
    • ES5:原型链继承、构造函数继承、组合继承、寄生组合继承
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232612.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datagrip mac 激活码_在线激活2022.02.16

    (datagrip mac 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~FZ…

    2022年4月1日
    70
  • 时序数据库介绍_时序数据库公司

    时序数据库介绍_时序数据库公司首先,什么是时序数据? ​ 简单来说,时序数据就是按照时间维度索引的数据,比如车辆轨迹数据,传感器温度数据。随着物联网时代的到来,时序数据的数据量呈井喷式爆发,针对于这一数据细分的优化存储显得越来越重要。01什么是InfluxDBInfluxDB是一个开源的、高性能的时序型数据库,在时序型数据库DB-EnginesRanking上排名第一。在介绍InfluxDB之前,先来介绍下时序数据。按照时间顺序记录系统、设备状态变化的数据被称为时序数据(TimeSeriesData),如.

    2022年10月5日
    3
  • js对象动态增加属性_js对象添加数据

    js对象动态增加属性_js对象添加数据varobj={};for(vari=0;i<10;i++){eval("obj.p"+i+"="+i);}

    2025年7月6日
    3
  • 一看就能学会的H5视频推流方案[通俗易懂]

    一看就能学会的H5视频推流方案[通俗易懂]一看就能学会的H5视频推流方案

    2022年4月21日
    44
  • python输出unicode编码_Python以utf8编码读取文件

    python输出unicode编码_Python以utf8编码读取文件withopen(self.path,’r’)astest:forlineintest:pass代码如上,出现错误:UnicodeDecodeError:’gbk’codeccan’tdecodebyte0x80inposition…UnicodeDecodeError:’gbk’codeccan’tdecodebyte0x80inposition9:…或者是UnicodeDecodeErr..

    2025年11月9日
    7
  • 安捷伦示波器使用说明书_安捷伦信号发生器使用方法

    安捷伦示波器使用说明书_安捷伦信号发生器使用方法本帖最后由god_blessme于2017-9-1913:45编辑小弟最近在搞一个程序,是要读取安捷伦示波器每一屏数据并储存,网上貌似对于tek示波器连接的比较多,安捷伦的超级少,所以大部分是自己看着改的命令,现在碰到的问题很奇葩,运行程序后一个figure显示的数据是正确的,一个figure显示的是错误的。然而我在循环里把waveform_YIncrement变量的注释去掉的话,fig…

    2022年10月12日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号