ex09-02-7

ソース

class Car {
  static getNextVin() { // 車両番号を得る
    return Car.nextVin++; // this.nextVin++でも動作するがクラス名を用いるほうがよい
  }
  constructor(make, model) {
    this.make = make;
    this.model = model;
    this.vin = Car.getNextVin();
  }
  static areSimilar(car1, car2) { // メーカーとモデルが同じか
    return car1.make===car2.make && car1.model===car2.model;
  }
  static areSame(car1, car2) { // 車両番号が同じか
    return car1.vin===car2.vin;
  }
}
Car.nextVin = 0;

const car1 = new Car("Tesla", "Model S");
const car2 = new Car("Mazda", "3i");
const car3 = new Car("Mazda", "3i");

console.log(car1.vin); // 0
console.log(car2.vin); // 1
console.log(car3.vin); // 2

console.log(Car.areSimilar(car1, car2)); // false
console.log(Car.areSimilar(car2, car3)); // true
console.log(Car.areSame(car2, car3)); // false
console.log(Car.areSame(car2, car2)); // true