第三种 组合继承方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
//第三种:混合继承(组合继承)吸收上面两种方法的优点
function Cat(name,color){
this.name = name;
this.color = color;
this.trait = function(){
console.log('卖萌');
}
}
Cat.prototype.skill = function(){
console.log('进行捕鱼');
}
function Dog(name,color,food){
this.food = food;
Cat.call(this,name,color);
}
Dog.prototype = Object.create(Cat.prototype); //把狗的原型指向猫的实例对象
//Object.Create()用于创建一个空对象,并把对象的prototypr链接到Cat.prototype上
Dog.prototype.constructor = Dog; // 指正构造器
var dog1 = new Dog('小傻','pink','榴莲');
console.log(dog1.name); //undefined
console.log(dog1.food);
dog1.trait();
dog1.skill();
console.log(dog1.constructor); // f Cat(){ ....}
//两种方法的结合可以实现相对比较完美的继承,
//关键一点:指正构造器(类型)
</script>
</body>
</html>