Классы ES6: разные способы написания, один и тот же вывод - PullRequest
0 голосов
/ 14 января 2019

Я создал Class Vehicle и расширил его с помощью Class Car. Однако при расширении класса я получил один и тот же вывод, используя разные способы написания constructor () и super () - см. Случаи с 1 по 4. Может ли кто-нибудь помочь мне определить различия?

Вот мой вывод:

  • Случай 1 и Случай 2 идентичны. При исключении constructor () и super () по умолчанию система включает их в выполнение кода, передавая все аргументы от дочернего к родительскому классу.
  • В случае 3 я создаю экземпляр класса Car, передавая значение «Mercedes» в качестве значения, а «car» переопределяет переменную type в классе Car. Это означает, что если я создаю экземпляр класса Car во второй раз и на этот раз передам значение «Volvo», результат будет
   let car = new Car('Volvo');
   console.log(car.getName() ); // This is the car's name: Volvo
   console.log(car.getType() ); // car
  • В случае 4 я создаю экземпляр класса Car, переопределяя два значения ('Mercedes' и 'car', обе переменные name и type в классе Car. В результате, если я создаю экземпляр Класс автомобиля, на этот раз передавая значения «Volvo» и «moto», в результате console.log все равно будет отображаться Merceds и car:
   let car = new Car('Volvo', 'moto');
   console.log(car.getName() ); // This is the car's name: Mercedes
   console.log(car.getType() ); // car

Класс

    class Vehicle {
      constructor (name, type) {
        this.name = name;
        this.type = type;
      }
      getName () {
        return this.name;
      }
      getType () {
        return this.type;
      }
    }

Удлиняет - Дело 1

    class Car extends Vehicle {
      getName () {
        return "This is the car's name: " + super.getName();
      }
    }

    let car = new Car('Mercedes', 'car');
    console.log( car.getName() ); // This is the car's name: Mercedes
    console.log( car.getType() ); // car

Удлиняет - Дело 2

    class Car extends Vehicle {
      constructor (name, type) {
        super(name, type);
      }
      getName () {
        return "This is the car's name: " + super.getName();
      }
    }

    let car = new Car('Mercedes', 'car');
    console.log( car.getName() ); // This is the car's name: Mercedes
    console.log( car.getType() ); // car

Удлиняет - Дело 3

    class Car extends Vehicle {
      constructor (name) {
        super(name, 'car');
      }
      getName () {
        return "This is the car's name: " + super.getName();
      }
    }

    let car = new Car('Mercedes');
    console.log( car.getName() ); // This is the car's name: Mercedes
    console.log( car.getType() ); // car

Удлиняет - Дело 4

    class Car extends Vehicle {
      constructor (name) {
        super('Mercedes', 'car');
      }
      getName () {
        return "This is the car's name: " + super.getName();
      }
    }

    let car = new Car;
    console.log( car.getName() ); // This is the car's name: Mercedes
    console.log( car.getType() ); // car
...