prototype和__proto__理解笔记

构造函数

function Person(){
    
}

var p1 = new Person();

Person就是一个构造函数,通过new创建了p1对象实例。

Person.prototype
//输出
{constructor: ƒ}

p1.__proto__ === Person.prototype;
> > > true

每个函数都会有一个prototype属性,这个属性是一个指针,指向一个对象(==只有函数才有==)

Person.prototype.constructor === Person === p1.constructor;
> > > true

Person.prototype.constructor
> > > ƒ Person(){}

总结

xxx.prototype 指向xxx自身的构造函数(xxx是一个class或者是一个构造函数)

xxx.prototype.proto 指向object原型

例如:

class A {
  constructor(aa) {  
      this.aa = 'aa';  
  }
  bb() {   
      return 'bb' ;
  }
}

function Person(){
    
}

let cc = new Person();
  1. A和Person的prototype 指向自身
  2. A.prototype.proto 指向object原型
  3. cc.prototype 等于undefined
  4. cc.proto 等于 Person.prototype

自我理解

  • .prototype 代表原型 即函数本身
  • .proto 粗俗理解为调用人的“爹”,即爹的原型

参考文章

你可能感兴趣的:(prototype和__proto__理解笔记)