构造函数式继承
// 构造函数式继承
// 声明父类
function SuperClass(id) {
// 引用类型共有属性
this.books = ['js', 'html', 'css']
// 类类型共有属性
this.id = id
}
// 父类声明原型方法
SuperClass.prototype.showBooks = function () {
console.log(this.books)
}
// 声明子类
function SubClass(id) {
// 继承父类
SuperClass.call(this, id) // call 方法
}
// 创建第一个子类的实例
var c1 = new SubClass(10)
var c2 = new SubClass(11)
c1.books.push('vue')
console.log(c1.books) // [ 'js', 'html', 'css', 'vue' ]
console.log(c1.id) // 10
console.log(c2.books) // [ 'js', 'html', 'css' ]
console.log(c2.id) // 11
c1.showBooks() // TypeError
// 虽然解决了子类修改共有属性会影响其他子类的问题,但父类中的原型方法没有被子类复用