美文网首页
图解原型链构成

图解原型链构成

作者: 九亿girls的梦 | 来源:发表于2019-06-13 16:33 被阅读0次

本文不对原型链做过多的解释,意在理解记住原型链的构成。下面会用到一些图,先来看看每个图代表什么。


p0.jpg
首先来了解一下关键字的作用和约定
  • 约定
    1、每个对象都有_ proto _属性。
    2、只有函数对象才有prototype属性。
    3、只有普通对象(本文特指prototype指向的对象)才有constructor属性。
  • function关键字的作用(以 function A()为例)
    1、新建两个对象:函数对象A,普通对象A.prototype(简称为B)。
    2、A对象的_ proto 属性指向Function.prototype。
    3、A对象的prototype属性指向B,B的constructor属性指向A。
    4、B的
    proto _属性指向Object.prototype(注意如果是function Object,那么Object.prototype的proto _属性指向null)。
    如下图所示:
    p2.jpg
  • new关键字的作用 (以 new A()为例)
    1、 new A()创建出来的一个实例a,并且这个a的_ proto 属性指向A对象的prototype属性指向的对象,也就是: a. proto _=A.prototype。
    如下图所示:
    p1.jpg
在了解了上面信息之后,接下来的图就能看懂了。

1、js中一开始就有内置的Function、Object函数对象,看下图他们的结构:


p3.jpg

2、如果我们使用function定义了一个Cat的构造函数,那么结构就变成下图:


p4.jpg
3、如果我们再使用new,创建了Cat和Object的实例,看下图:
p5.jpg

总结:
1、构造函数对象的_ proto 都指向Function.prototype,也就是: A. proto =Function.prototype。
2、实例对象的
proto 都指向其对应构造函数的prototype指向,也就是:a. proto =A.prototype。
3、普通对象的
proto 都指向Object.prototype,也就是: A.prototype. proto _=Object.prototype。
4、普通对象的constructor都指向其对应构造函数,也就是:A.prototype.constructor=A。

相关文章

  • 图解原型链构成

    本文不对原型链做过多的解释,意在理解记住原型链的构成。下面会用到一些图,先来看看每个图代表什么。 首先来了解一下关...

  • 原型、原型链

    (什么是原型、原型链?有什么作用) JavaScirpt深入之从原型到原型链 图解 Javascript 原型链 ...

  • 原型链图解

    注解 红虚线即原型链,各类实例都是通过原型链继承到各数据类型本身的方法和属性。比如Object原型对象包含着对象的...

  • 原型链图解

    原型链:只要是对象就有原型,并且原型也是对象,因此只要定义了一个对象,那么就可以找到它的原型,如此反复,就可以构成...

  • 在nodejs中面向对象:Bearcat

    JS中的面向对象 最最最开始,我们先来说说JS中的面向对象。 原型链 参考文章:图解Javascript原型链 J...

  • JS原型02之原型链

    1.如何构成原型链2.原型链上属性的增删改查原型链上的增删改查和原型一致,只有本人能操作3.绝大多数对象最终会继承...

  • javascript原型链图解

    javascript原型链图解函数对象及其 prototype 属性函数的所有实例中的__proto__属性都指向...

  • 图解Javascript原型链

    备份自:http://blog.rainy.im/2015/07/20/prototype-chain-in-js...

  • 图解javascript原型链

    作者: HerryLo 本文永久有效链接: https://github.com/AttemptWeb.........

  • js,javascript 原型,原型链,原型图解

    我们解说一下这个图: 函数都有一个prototype属性,这个属性是一个对象。叫做原型对象。可以理解为是new出来...

网友评论

      本文标题:图解原型链构成

      本文链接:https://www.haomeiwen.com/subject/azusfctx.html