是否可以仅扩展多个类中的某些特定部分?例:



class Walker {
  walk() {
    console.log("I am walking");
  }
  // more functions
}
class Runner {
  run() {
    console.log("I am running");
  }
  // more functions
}

// Make a class that inherits only the run and walk functions

最佳答案

您可以从其他类中选择要添加到现有类中的方法,只要新对象具有实例数据和要添加的方法期望在该对象上的方法即可。

class Walker {
  constructor() {}
  walk() {
    console.log("I am walking");
  }
  // more functions
}

class Runner {
  constructor() {}
  run() {
    console.log("I am running");
  }
  // more functions
}

class Participant {
  constructor() {}
}

// add methods from other classes to the Participant class
Participant.prototype.run = Runner.prototype.run;
Participant.prototype.walk = Walker.prototype.walk;


请记住,方法只是作为原型属性的函数。因此,只要将放置在对象上的对象具有正确的支持实例数据或这些新添加的方法可能需要的其他方法的权限,便可以将任何功能分配给所需的原型。



当然,如果我们对您的整体问题有更多的了解,您也许还可以通过更经典的继承来解决您的问题,但是您不能使用继承来解决您所要求的确切方法。

标准继承继承了基类的所有方法。如果只需要其中一些,则必须手动修改原型对象,以仅将所需的方法放在那里。

将来,如果您描述要解决的问题而不是要解决的解决方案,您将获得更好的答案。这使我们能够了解您真正想要实现的目标,并允许我们提供您尚未想到的解决方案。

07-24 09:50
查看更多