美文网首页
js原型,原型链

js原型,原型链

作者: Cola1993a | 来源:发表于2017-08-31 23:25 被阅读45次
    image.png

    图片来自 kzloser

    • js的三种对象,即实例对象,构造函数对象,原型对象

    • 红色线prototype属性:
      普通对象没有prototype,函数对象都有prototype。
      所以实例对象和构造函数对象之间没有红线,但是构造函数和原型对象之间有红线。

    • 黑色线 constructor属性:原型对象中都有个预定义的constructor对象,用来引用他的函数对象。

        F.prototype.constructor = F 
        Object.prototype.constructor = Object 
        Array.prototype.constructor = Array 
    
    • 蓝色线 原型链 :js的每一个对象都有个proto内置属性,指向创建他的函数对象的原型对象。so,创建实例对象的函数是构造函数对象(第二列),而他的原型就对应各自的.prototype即原型对象(第三列)
      所有原型对象的proto 指向的都是 Object.prototype ,除了 Object.prototype 本身,它自己是指向 null ,即原型链终点是null

    • 绿色线 构造函数产生的实例对象,通过new XX() 所得到的实例。

    • 紫色线 proto的由来,其实和蓝色线是相同的,因为
      第二列构造函数对象.prototype = 第三列原型对象


    下面是另一张图,也很好。

    image.png

    和原型有关的API
    instanceof, 测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性
    object instanceof constructor
    检测 constructor.prototype 是否存在于参数 object 的原型链上
    Object.getPrototypeOf(obj)得到obj的原型

    相关文章

      网友评论

          本文标题:js原型,原型链

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