javascript - 具有原型(prototype)的 parent 的多重继承

标签 javascript inheritance

javascript有没有办法继承多个类的原型(prototype):

function food(){
}

food.prototype.eat = function(){}

function plant(){
}

plant.prototype.grow = function(){}


function tomato(){
} // needs to have grow and eat methods (and if possible in proto type)

编辑:

不,西红柿不吃, eat方法意味着吃食物而不是食物吃掉你

最佳答案

我不明白为什么西红柿可以吃任何东西:)

但是,可以在 JavaScript 中实现某种多重继承。您只需要通过从两个父对象原型(prototype)中获取属性来扩展原型(prototype):

function Plant(name) {
  this.name = name;
}
Plant.prototype.grow = function() {
  document.write("<pre>" + this.name + " growing </pre>");
};

function Killer(name) {
  this.name = name;
}
Killer.prototype.eat = function() {
  document.write("<pre>" + this.name + " eating </pre>");
};

function Tomato(name) {
  this.name = name;
}

for (var key in Plant.prototype) {
  Tomato.prototype[key] = Plant.prototype[key];
}

for (var key in Killer.prototype) {
  Tomato.prototype[key] = Killer.prototype[key];
}

var killerTomato = new Tomato("yum-yum");

killerTomato.eat();
killerTomato.grow();

关于javascript - 具有原型(prototype)的 parent 的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37205026/

相关文章:

javascript - 无法在 react 中从 react 签名 Canvas 生成base64字符串

c++ - 为什么这个对象没有检测到父类?

具有在 2 个不同子类中实现的虚拟方法的 C++ 父类

C++ 组合——我必须包装所有这些函数吗?

使用全局注入(inject)器的 Angular 7 组件继承

javascript - 在 javascript/node.js 中迭代对象数组的有效方法

javascript - 当我的组件卸载时,如何删除 Canvas 元素?

javascript - 如何在 Javascript 中生成加密安全的伪随机数?

javascript - event.dataTransfer 在 setTimeout 函数中丢失其项目

Java:如何判断一个对象是否属于特定的子类