先来一个老的继承
function SuperType(name) {
}
function SubType(name,age) {
}
SubType.prototype=Object.create(SuperType.prototype);
console.log(SuperType.prototype.__proto__==Object.prototype);//true,因为SuperType.prototype是一个比较一般的object
console.log(SubType.__proto__ === Function.prototype)//true,
console.log(SubType.prototype.__proto__ === SuperType.prototype )//true------------------------------------3
3式是什么意思?得从SubType.prototype=Object.create(SuperType.prototype);这句话来理解:SubType.prototype被赋值成了一个对象,记作a,
有a.__proto__是SuperType.prototype,就这么成立了。
在来一个新的方式
class SuperType {
}
class SubType extends SuperType{
}
console.log(SuperType.prototype.__proto__==Object.prototype);//true
console.log(SubType.__proto__ === Function.prototype)//false 这个和传统的方式不一样啊,天哪
console.log(SubType.__proto__ === SuperType)//true,表示构造函数的继承
console.log(SubType.prototype.__proto__ === SuperType.prototype )//true,当作传统的理解就行
参考文献:
http://es6.ruanyifeng.com/#docs/class-extends