美文网首页
原型与原型链学习笔记

原型与原型链学习笔记

作者: xyfun | 来源:发表于2016-12-02 17:10 被阅读0次

    1、对象都是由函数创建出来的

    例如:var a= new Object();var b=new Function();var c=new Array();像这些ObjectFunctionArray都是函数。
    在实际工作中我们是这样写的var a={};var b=function(){};var c=[];;这两者本质上是没有任何区别的,后者只是一种快捷方式,在编程语言中,一般叫做“语法糖”。

    2、函数也是对象(鸡生蛋还是蛋生鸡的问题了)

    函数也是对象,并且有一个默认的属性prototype
    看下图:

    Paste_Image.png

    我们创建了一个superType函数,可以看到superType.prototype也是一个对象:

    superType.prototype={
        constructor:function(),
        __proto__:Object
    }
    

    这个对象有两个属性,其中constructor指向一个函数,这个函数即是superType。

    Paste_Image.png

    另外一个属性__proto__的值则是一个对象。

    3、每个函数function都有一个prototype,即原型;每个对象都有一个__proto__

    每个对象的__proto__都指向创建该对象的函数——的prototype。

    一步一步来:

    1. 创建该对象的函数:可以是ArrayObjectFucntion 或者自定义的函数.
    2. 上一步函数的prototype

    4、 Object.prototype__proto__指向null

    这个对象(Object.prototype)的__proto__属性是个特例。否则的话就就无休止了。

    结合上面几点来理解下面这张图片

    Paste_Image.png

    相关文章

      网友评论

          本文标题:原型与原型链学习笔记

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