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 粗俗理解为调用人的“爹”,即爹的原型

参考文章

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容