【问题标题】:In a javascript class, how to have a method inherit from another method?在 javascript 类中,如何让一个方法从另一个方法继承?
【发布时间】:2021-02-02 20:25:55
【问题描述】:

在我的 Javascript 类 Order 中,我有一个静态方法和一个非静态方法,它们都包含相同的代码。如果可能,这些方法中的一个如何从另一个继承代码?这是为了让我的代码看起来更具可读性,因为它变得非常笨拙。

【问题讨论】:

  • 将该方法移出类并使用 asa 实用程序。更容易测试。这就是使用函数式编程而不是 oo 编程的原因。 Oo 对于特定目的有更多好处。描述和对象并给它方法。不幸的是,这种 oo 方法似乎适用于所有事情,并增加了不必要的复杂性。
  • 你可以在非静态方法中调用静态方法。这样您就不必在两个地方使用相同的代码

标签: javascript function class methods static


【解决方案1】:

您可以使用类和继承,创建父类,然后创建子类。 extends 关键字使父类的方法在子类中可用。
super关键字调用父类的构造函数。

//Parent class (superclass)
class Animal {                            
  constructor(name) {           
    this._name = name;
  }
  get name() {
    return this._name;
  }
} 

//Child class (subclass)
class Cat extends Animal {             
  constructor(name, usesLitter) {
    super(name);                    
    this._usesLitter = usesLitter;
  }
    get usesLitter() {
    return this._usesLitter;
  }
}
const bryceCat = new Cat('Bryce', true);
console.log(bryceCat.name);             //Output: Bryce
console.log(bryceCat.usesLitter);       //Output: true
要创建静态方法,您可以使用 static 关键字。例如, generateName() 您可以直接从类中调用它,但不能从类的实例中调用。

class Human {
  constructor(name) {
    this._name = name;
  
  static generateName() {       
    const names = ['Angel', 'Pedro', 'Luis', 'Mario', 'Julio'];
    const randomNumber = Math.floor(Math.random()*5);
    return names[randomNumber];
  }
} 
console.log(Human.generateName());  // Returns a random name.

【讨论】:

  • 我很欣赏你的回答,但我说的是一个类,它的方法从同一个类中的另一个方法继承代码。您的示例涉及使用多个类进行继承。
猜你喜欢
  • 1970-01-01
  • 2021-11-30
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2011-01-15
  • 2013-04-20
相关资源
最近更新 更多