- prorotype是静态属性
-
proto是实例属性
prototype表示类的原型对象,proto表示原型对象中定义的内部属性[prototype]的值。
类的每一个实例都有一个proto属性,用于引用创建它的构造方法的prototype属性,也就是该类的原型对象,即存在如下等式:(new Array("abc")).proto===Array.prototype (Array("abc")为Array的实例)
image.png
constructor
上图中,现在理解原型对象(Person.prototype)下constructor属性
这个属性其实就是将原型对象指向关联的构造函数
Person.prototype.construstor = Person
原型链
每一个对象都会在内部初始化一个prototype(原型),当查找一个属性时,先会从属性没查找,没有的话再去prototype里去查找,prototype又会有自己的prototype,直到找到为止,一旦找到就不会继续向上查找。原型对象Person.prototype的原型就是Object.prototype这个大boss,所有原型对象都是Object构造函数生成的.它不再有原型,为null,是尽头。
proto
第一张图中看到,在person1和person2实例对象下面有一个[[prototype]],其实没有标准的方式可以访问它,但是主流浏览器上在每个对象上(null除外)都支持一个属性,那就是proto,这个属性会指向该对象的原型
function Person(){}
var person1 = new Person
console.log(person.proto === Person.prototype//true)
网友评论