prototype与proto

原型是js面向对象编程中非常重要的概念

 

prototype

每个函数都会有一个prototype属性,这个属性是一个指针,指向一个对象.(注意:bind方法返回的函数没有prototype属性)。

 __proto__ 

每个实例对象( object )都有一个私有属性(称之为 __proto__ )指向它的构造函数的原型对象(prototype )。

prototype与__proto__之间的联系

平时我们在创建函数的时候其实默认是创建了Function的构造函数。在声明其他数据类型时,其实也是隐式的实例化其对应的构造函数,从而可以调用各种基础方法。

var funciotn Person(){}  《》 var Person = new Function();

通过实列对象的 __proto__属性,可以找到其构造函数的原型对象(prototype

function Person(){}
Person.__proto__===Function.prototype  //true

在笔者认为 __proto__其实就是拷贝于其构造函数的prototype,为了区分实例与其构造函数而存在的。

因为函数的特殊性,可以给函数添加新的prototype,再通过new创建实例。

附上原型图

 

 

posted @ 2020-10-15 17:04  努力做个有趣的惹  阅读(89)  评论(0)    收藏  举报