// How use super like in OOP with a Prototypal Language : !function(){ 'use strict'; console.log("Starting"); var Feline = function(name, race) { if ( !(this instanceof Feline) ) return; this.name = name; this.race = race || "Feline" console.log("Feline ADN new say : A new " + this.race + " is born : " + this.name); }; Feline.prototype.hello = function(){ console.log("Feline ADN hello say : " + this.myName()); }; Feline.prototype.myName = function(){ return "My name is " + this.name; } console.log(Feline); console.log('--- Here: leo = new Feline("Léo");'); var leo = new Feline("Léo"); console.log(leo); console.log('--- Here: leo.hello();'); leo.hello(); var Cat = function(_super) { return function(name, owner) { if ( !(this instanceof Cat) ) return; _super.apply(this, [name, "Cat"]); this.owner = owner; }; }(Feline); Cat.prototype = Object.create(Feline.prototype); Cat.prototype.constructor = Cat; Cat.prototype.hello = function(_super){ return function(){ _super.apply(this); console.log("Cat ADN hello say: And my owner is " + this.owner); console.log("Cat ADN hello say: ... Yes, I inherit also of this capacity to say " + this.myName()); // Method exists only in Feline prototype }; }(Cat.prototype.hello); // Stick to the initial hello method through the prototype chain console.log(Cat); console.log('--- Here: kitty = new Cat("Kitty", "John");'); var kitty = new Cat("Kitty", "John"); console.log(kitty); console.log('--- Here: kitty.hello();'); kitty.hello(); console.log("End."); }(); /* Starting function Feline() --- Here: leo = new Feline("Léo"); Feline ADN new say : A new Feline is born : Léo Object { name: "Léo", race: "Feline" } --- Here: leo.hello(); Feline ADN hello say : My name is Léo function Cat() --- Here: kitty = new Cat("Kitty", "John"); Feline ADN new say : A new Cat is born : Kitty Object { name: "Kitty", race: "Cat", owner: "John" } --- Here: kitty.hello(); Feline ADN hello say : My name is Kitty Cat ADN hello say: And my owner is John Cat ADN hello say: ... Yes, I inherit also of this capacity to say My name is Kitty End. */