// here, we want to create subclasses and override methods, but still use the original functionality var Vehicle = function(){ this.speed = 0; }; Vehicle.prototype.stop = function(){ this.speed = 0; }; var Car = function(){ this.isBraking = false; // call superclass constructor Vehicle.call(this); }; Car.prototype = Object.create(Vehicle.prototype); Car.prototype.stop = function(){ this.isBraking = true; // call superclass method Vehicle.prototype.stop.call(this); }; var myCar = new Car(); myCar.speed = 60; assertTripleEqual(myCar.isBraking, false); myCar.stop(); assertTripleEqual(myCar.isBraking, true, "the subclass method has been called"); assertTripleEqual(myCar.speed, 0, "the superclass method has been called");