Class definition
There is a simple classs definition for prototype design pattern:
var Animal = function (legs, weight, speed) { this.legs = legs; this.weight = weight; this.speed = speed; }; Animal.prototype.maxMobility = function () { return "Max mobility " + (this.weight * this.speed); }; var dog = new Animal(4,30,40); alert(dog.maxMobility());
Class inheritance
To create inheritance we have to use Object.create():
Dog.prototype = Object.create(Animal.prototype); Dog.prototype.constructor = Dog;
Example:
var Animal = function (legs, weight, speed) { this.legs = legs; this.weight = weight; this.speed = speed; }; Animal.prototype.maxMobility = function () { return "Max mobility " + (this.weight * this.speed); }; var Dog = function (weight, speed) { Animal.call(this, 4, weight, speed); }; Dog.prototype = Object.create(Animal.prototype); Dog.prototype.constructor = Dog; var dog = new Dog(10, 20); alert(dog.maxMobility());
Base class access
To access base class we have to use call() method.
There is an example how to access base class constructor and base class method maxMobility():
var Animal = function (legs, weight, speed) { this.legs = legs; this.weight = weight; this.speed = speed; }; Animal.prototype.maxMobility = function () { return "Max mobility " + (this.weight * this.speed); }; var Dog = function (weight, speed) { Animal.call(this, 4, weight, speed); }; Dog.prototype = Object.create(Animal.prototype); Dog.prototype.constructor = Dog; Dog.prototype.maxMobility = function() { return "Dog: " + Animal.prototype.maxMobility.call(this); }; var dog = new Dog(10, 20); alert(dog.maxMobility());