美文网首页
Prototype和__proto__

Prototype和__proto__

作者: 我爱吃肥肠 | 来源:发表于2018-07-25 17:19 被阅读0次

    1, 只有函数有prototype这个属性.属性值是 一个有constructor属性的对象.

    2 new 通过new关键字创建一个实例的时候,实例继承构造函数prototype上的所有属性和方法.方法是 :通过设置自己的__proto__指向构造函数的prototype.

    3, 构造函数通过prototype来存储要共享的属性和方法.也可以设置prototype指向现存的对象A来继承A对象的属性和方法

    4, 对象的__proto__总是指向构造该对象的函数的原型prototype.

    原型链

    在上图中,构造函数Foo既有prototype属性,也有__proto__属性.prototype属性是es规范的规定,是一个对象,包含在构造函数定义(不需要等到执行)

    时候就自动生成的一个包含constructor属性的对象.如下图,以及需要共享的属性和方法.

    函数的prototype和constructor

    上面说到,实例的__proto__属性的值是该实例的构造函数的prototype,所以f1和f2实例的__proto__就是他们的构造函数Foo的原型prorotype.

    构造函数Foo本身即是函授,也是对象,所以也有__proto__属性,该属性的值就是能够构造Foo函数的构造函授的prototype,那么Foo函数由谁构造呢?

    从上图可以看出,是function Function(){},所以构造函数Foo的__proto__指向他的构造函数 Function的原型Function.prototype.整体脉络很清晰,但

    是有两个要注意的点.一个是Function构造函授的__proto__和prototype都是指向Function.prototype.同时,Object构造函数的__proto__也指向

    Function.prototype.由此可以得出结论: Function的两个实例是Function构造函数和Object构造函数.Object可以理解,Function是什么原因?

    相关文章

      网友评论

          本文标题:Prototype和__proto__

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