Created
September 5, 2013 03:34
-
-
Save smt/6445763 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // credit: http://davidshariff.com/blog/javascript-inheritance-patterns/ | |
| (function () { | |
| 'use strict'; | |
| /*************************************************************** | |
| * Helper functions for older browsers | |
| ***************************************************************/ | |
| if (!Object.hasOwnProperty('create')) { | |
| Object.create = function (parentObj) { | |
| function tmpObj() {} | |
| tmpObj.prototype = parentObj; | |
| return new tmpObj(); | |
| }; | |
| } | |
| if (!Object.hasOwnProperty('defineProperties')) { | |
| Object.defineProperties = function (obj, props) { | |
| for (var prop in props) { | |
| Object.defineProperty(obj, prop, props[prop]); | |
| } | |
| }; | |
| } | |
| /*************************************************************/ | |
| var human = { | |
| name: '', | |
| gender: '', | |
| planetOfBirth: 'Earth', | |
| sayGender: function () { | |
| alert(this.name + ' says my gender is ' + this.gender); | |
| }, | |
| sayPlanet: function () { | |
| alert(this.name + ' was born on ' + this.planetOfBirth); | |
| } | |
| }; | |
| var male = Object.create(human, { | |
| gender: {value: 'Male'} | |
| }); | |
| var female = Object.create(human, { | |
| gender: {value: 'Female'} | |
| }); | |
| var david = Object.create(male, { | |
| name: {value: 'David'}, | |
| planetOfBirth: {value: 'Mars'} | |
| }); | |
| var jane = Object.create(female, { | |
| name: {value: 'Jane'} | |
| }); | |
| david.sayGender(); // David says my gender is Male | |
| david.sayPlanet(); // David was born on Mars | |
| jane.sayGender(); // Jane says my gender is Female | |
| jane.sayPlanet(); // Jane was born on Earth | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment