组合继承:
1. 构造函数继承:把父类构造函数里面的属性和方法继承到子类里面,在子类的构造函数指定对象调用父类的构造函数 并且传递参数,缺点不能继承构造函数原型上的的属性和方法
原型上的继承:1把父类的原型通过Object.create方法赋值给子类的原型
2 把子类的constructor属性指向构造函数本身
// 组合继承:构造函数继承:在子类添加 People.apply(this,[name,age])
// 和原型继承: Man.prototype = Object.create(People.prototype)
// Man.prototype.constructor = Man
function People(name,age){
this.name = name
this.age = age
this.smoke=function(){
console.log(this.name+"吸红塔山")
}
}
People.prototype.drink = function(){
console.log(this.name+"喝茅台")
}
function Man(name,age,houjie){
// 构造函数继承:继承父类构造函数里面的东西
People.apply(this,[name,age])
this.houjie = houjie
}
// 原型继承
Man.prototype = Object.create(People.prototype)
Man.prototype.constructor = Man
var yanYaLun = new Man("炎",40,true)
console.log(yanYaLun.name)
yanYaLun.smoke()
yanYaLun.drink()