JSFiddle - React, Tailwind, and code Playground

by bouillard

JavaScript

var Vehicle = function(nbWheels){
    console.log("Create Vehicle("+nbWheels+")");
    this.nbWheels = nbWheels;
    this.speed = 0;
};

Vehicle.prototype.accelerate= function(acc){
  console.log("Vehicle.accelerate("+acc+")");
  this.speed += acc;
  return this;
};
Vehicle.prototype.decelerate= function(dec){
  console.log("Vehicle.decelerate("+dec+")");
  this.speed -= dec;
    if (this.speed<0) {
        this.speed = 0;
    }
  return this;
};

var Moto = function(){
    console.log("Create Moto()");
};
Moto.prototype = new Vehicle(2);

var Car= function(topSpeed){
    console.log("Create Car("+topSpeed+")");
    this.topSpeed = topSpeed;
};
Car.prototype = new Vehicle(4);

Car.prototype.accelerate = function(acc) {
  console.log("Car.accelerate("+acc+")");
    Vehicle.prototype.accelerate.call(this,acc);
    if (this.speed>this.topSpeed) {
        this.speed = this.topSpeed;
    }
    return this;
};

Vehicle.prototype.log= function() {
  console.log(this.nbWheels+" : "+this.speed);
  return this;
};

var m = new Moto();
m   .log()
    .accelerate(30)
    .log()
    .accelerate(100)
    .log()
    .decelerate(200)
    .log()
    ;

var c = new Car(100);
c   .log()
    .accelerate(30)
    .log()
    .accelerate(100)
    .log()
    ;