revision:
The Object.create() static method creates a new object, using an existing object as the prototype of the newly created object.
Object.create(proto) Object.create(proto, propertiesObject)
Parameters:
proto : required. The object which should be the prototype of the newly-created object.
propertiesObject : optional. If specified and not undefined, an object whose enumerable own properties specify property descriptors to be added to the newly-created object, with the corresponding property names. These properties correspond to the second argument of Object.defineProperties().
const person = { isHuman: false, printIntroduction: function() { console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`); } }; const me = Object.create(person); me.name = 'Matthew'; // "name" is a property set on "me", but not on "person" me.isHuman = true; // Inherited properties can be overwritten me.printIntroduction(); // Expected output: "My name is Matthew. Am I human? true"
example: a new instance of an object is created
<div> <p id="create-1"></p> </div> <script> // creating a function which will be the prototype for the object to be created later function fruits() { this.name = 'fruit 1'; } // creating a function to whose object will inherit properties from the prototype // using object.create() method function apple() { fruits.call(this); } // creating an object of the apple function which will have properties of the prototype object i.e. fruits apple.prototype = Object.create(fruits.prototype); const app = new apple(); // Displaying the created object console.log(app.name); document.getElementById("create-1").innerHTML = "object created: " + app.name; </script>
example: a new instance of an object is created
<div> <p id="create-2"></p> <p id="create-3"></p> </div> <script> // creating a function which will be the prototype for the object to be created later function fruits1() { this.name = 'fruit 2'; this.season = 'summer'; } // creating a function to whose object will inherit properties from the prototype using object.create() method function apple1() { fruits1.call(this); } // creating an object of the apple function which will have properties of the prototype object i.e. fruits apple1.prototype = Object.create(fruits1.prototype); const app1 = new apple1(); // Displaying the created object console.log(app1.name); console.log(app1.season); document.getElementById("create-2").innerHTML = "object created: " + app1.name; document.getElementById("create-3").innerHTML = "object created: " + app1.season; </script>