Skip to content

Instantly share code, notes, and snippets.

@ger86
Created June 24, 2020 11:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ger86/89fd8829bc19505b0760316f70f6e196 to your computer and use it in GitHub Desktop.
Save ger86/89fd8829bc19505b0760316f70f6e196 to your computer and use it in GitHub Desktop.
/**************************************************************************
*
* πŸ–πŸ‚πŸ„πŸ“ George Orwell explaining Javascript Prototype πŸ–πŸ‚πŸ„πŸ“
*
**************************************************************************/
function Animal(name, type) {
this.name = name;
this.type = type;
}
Animal.prototype.isAllowedToWalkOn2Legs = false;
Animal.prototype.isAllowedToSleepInBeds = false;
var napoleon = new Animal("NapoleΓ³n", "πŸ–");
const boxer = new Animal("Boxer", "🐴");
console.log(napoleon.isAllowedToWalkOn2Legs); // false
console.log(boxer.isAllowedToWalkOn2Legs); // false
console.log(Object.getPrototypeOf(napoleon) === Object.getPrototypeOf(boxer)); // true
console.log(Object.getPrototypeOf(napoleon) === Animal.prototype); // true
// Some time later βœŠπŸΌπŸ–βœŠπŸΌ
const empoweredPigPrototype = {
isAllowedToWalkOn2Legs: true,
isAllowedToCreateNewLaws: false,
type: "πŸ–",
friends: ["πŸ–", "πŸ•"]
};
var napoleon = Object.create(empoweredPigPrototype);
const squealer = Object.create(empoweredPigPrototype);
console.log(Object.getOwnPropertyNames(napoleon)); // []
console.log(napoleon.isAllowedToWalkOn2Legs); // true
console.log(squealer.isAllowedToCreateNewLaws); // false
console.log(squealer.friends); // ['πŸ–', 'πŸ•']
napoleon.friends.push("πŸ“");
console.log(squealer.friends); // ['πŸ–', 'πŸ•', 'πŸ“']
napoleon.isAllowedToCreateNewLaws = true;
console.log(napoleon.isAllowedToCreateNewLaws); // true
console.log(squealer.isAllowedToCreateNewLaws); // false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment