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

时间:2018-04-21 15:46:45

标签: javascript class inheritance properties

让我们假设以下代码:

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 个答案:

答案 0 :(得分:0)

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

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

但实际上,如果你的班级没有" parent" class has,它根本不应该是一个子类 - 它会违反Liskov substitution principle