title

原型链

含义

  • 构造函数,原型,实例的关系,每个构造函数的原型都会有一个内部指针指向该构造函数,每个构造函数的实例都会有一个内部指针指向该构造函数的原型;如果把该构造函数的原型当做另外一个构造函数的实例,那么该实例就会有一个内部指针指向新的构造函数的原型对象,新的构造函数的原型对象会有一个内部指针指向新的构造函数,这样层层嵌套下去就形成了原型链
  • 特别的一支原型链: 每个继承者的原型都是被继承者的实例,所以每个函数的原型都是Object的实例

图示

  • 原型对象.constructor = 构造函数

  • 实例.proto = 原型对象

    • Function 是顶层构造器

    • Object 是顶层原型

代码

function A() { this.a = true } A.prototype.getAProperty = function () { return this.a } function B() { this.b = false } B.prototype = new A() //此处的B的原型指向了A的构造函数 //可以手动把B的原型指向重新改回来 // B.prototype = { // constructor: B // } B.prototype.getBProperty = function(){ return this.b } let instance = new B() let res = instance.getAProperty() console.log(res) //true