Js里的继承个别就是原型链继承。即实现A实例的原型为B的原型,则A继承B。
首先须要理解下实例,构造函数,原型对象之间是怎么的关系。实例为从构造函数new失去的新对象,它有__proto__能够指向原型对象,通过instanceof办法能够判断实例的构造函数类型;构造函数的prototype指向原型对象,原型对象有constructor指向构造函数。

function A() {}function B() {}B.prototype.say = function(){console.log('say')}// 筹备一个两头变量function C(){}// 从新设置C的原型为B的原型C.prototype = B.prototype// 创立一个实例c,此时c的原型是B的原型var c = new C()// 设置实例c的构造函数指向A,c.constructor = A// 上述步骤后A新的原型对象c创立实现,它的原型指向B,构造函数指向AA.prototype = c// 此时原型链为 new A()._proto__ (c) => B.prototype => Object.prototype => nullconsole.log(new A(), new B())