js使用组合继承实现 Dog(实例属性:名字,原型方法:获取名字)继承Animal(实例属性:颜 色,原型方法:获取颜色)
时间: 2024-10-22 22:19:02 浏览: 21
在JavaScript中,组合继承是一种常见的继承方式,它结合了构造函数继承(也称为原型链继承)和原型对象直接赋值的方法。假设我们有`Dog`和`Animal`两个类:
```javascript
// 定义 Animal 类
function Animal(name) {
this.color = name;
}
Animal.prototype.getColor = function() {
return this.color;
}
// 定义 Dog 类,使用组合继承
function Dog(name) {
// 继承自 Animal 构造函数
Animal.call(this, 'Animal'); // 这里给 Dog 实例设置颜色为 'Animal'
// 添加 Dog 的实例属性
this.name = name;
}
// 使用 Animal 的原型方法并覆盖
Dog.prototype = Object.create(Animal.prototype); // 将 Dog 的原型指向 Animal 的原型
Dog.prototype.constructor = Dog; // 确保 constructor 指向 Dog
Dog.prototype.getName = function() { // 自定义 Dog 的获取名字的方法
return this.name;
}
// 创建 Dog 实例
let myDog = new Dog('Fido');
console.log(myDog.getName()); // 输出 "Fido"
console.log(myDog.getColor()); // 输出 "Animal" (实际上是继承来的)
```
在这个例子中,`myDog` 是一个 `Dog` 对象,它可以访问 `Dog` 类的实例属性 `name` 和从 `Animal` 类继承的原型方法 `getColor`(尽管这里我们重写了它)。这就是组合继承的基本思想。
阅读全文