//http://www.jermywells.com //js polymorphism var Person = function(){ this.openDrawerMessage = 'sees clothes in dresser drawer'; this.openDrawer = function(){ return this.openDrawerMessage; } } var BankTeller = function(){ this.openDrawerMessage = 'sees cash in cash drawer. cha ching!'; } BankTeller.prototype = new Person(); BankTeller.prototype.openDrawer = function(){ return this.openDrawerMessage; } var StayAtHomeDad = function(){ this.openDrawerMessage = 'sees kitchen knife [for cutting crusts off of a sammich].' } StayAtHomeDad.prototype = new Person(); StayAtHomeDad.prototype.openDrawer = function(){ return this.openDrawerMessage; } //get an instance of each object var person = new Person(); var teller = new BankTeller(); var stayAtHomeDad = new StayAtHomeDad(); document.body.innerHTML += 'A Person is a Person/an instanceof a Person: ' + '<b>' + (person instanceof Person) + '</b><br />' + 'The Person\'s open drawer result is: ' + '<b>' + person.openDrawer() + '</b><br /><br />'; document.body.innerHTML += 'A Bank Teller is a Person/an instanceof a Person: ' + '<b>' + (teller instanceof Person) + '</b><br />' + 'The Bank Teller\'s open drawer result is: ' + '<b>' + teller.openDrawer() + '</b><br /><br />'; document.body.innerHTML += 'A Stay-At-Home-Dad is a Person/an instanceof a Person: ' + '<b>' + (stayAtHomeDad instanceof Person) + '</b><br />' + 'The Stay-At-Home-Dad\'s open drawer result is: ' + '<b>' + stayAtHomeDad.openDrawer() + '</b><br /><br />';