Есть ли способ создать экземпляр подкласса и не наследовать определенное свойство?

Kleo спросил: 28 марта 2018 в 02:06 в: javascript

Давайте предположим следующий код:

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 из родительского класса?

1 ответ

Bergi ответил: 28 марта 2018 в 04:36

Вы можете перезаписать его нестроковым значением, в частности undefined, которое похоже на несуществующее свойство:

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

Но на самом деле, если у вашего класса нет всех свойств, которыми обладает "родительский" класс, он вообще не должен быть подклассом - это нарушит принцип подстановки Лискова.