有没有办法实例化子类而不继承特定属性



让我们假设下面的代码:

class Animal{
  constructor(name){
    this.name=name;
  }
}
class Dog extends Animal{
  constructor(lastname){
    super();
    this.lastname=lastname;
  }
}
var animal = new Animal('jim');
var rudy = new Dog('rudy');

除了在子类实例化后delete rudy.name之外,还有没有父类的 name 属性直接实例化子类的方法吗?

你可以用一个非字符串值覆盖它,特别是 undefined ,它类似于一个不存在的属性:

class Dog extends Animal{
  constructor(lastname){
    super(undefined);
    this.lastname=lastname;
  }
}

但实际上,如果你的类没有"父"类所具有的所有属性,它根本不应该是一个子类 - 这将违反 Liskov 替换原则。

相关内容

  • 没有找到相关文章

最新更新