revision:
The Object.setPrototypeOf() static method sets the prototype (i.e., the internal [[Prototype]] property) of a specified object to another object or null..
Object.setPrototypeOf(obj, prototype)
Parameters:
obj : required. The object which is to have its prototype set.
prototype : required. The object's new prototype (an object or null).
const obj = {}; const parent = { foo: 'bar' }; console.log(obj.foo); // Expected output: undefined Object.setPrototypeOf(obj, parent); console.log(obj.foo); // Expected output: "bar"
<div> <p id="proto-1"></p> <p id="proto-2"></p> <p id="proto-3"></p> <p id="proto-4"></p> </div> <script> let ninja1 = { prop1() { return 'Object.isExtensible()'; }, prop2() { return 'JavaScript '; } } let ninja2 = { prop3() { return 'Ninjasforninjas'; } } Object.setPrototypeOf(ninja2, ninja1); console.dir(ninja2); console.log(ninja2.prop3()); console.log(ninja2.prop2()); console.log(ninja2.prop1()); document.getElementById("proto-1").innerHTML = (ninja2.prop3); document.getElementById("proto-2").innerHTML = (ninja2.prop2); document.getElementById("proto-3").innerHTML = (ninja2.prop1); </script>
<div> <p id="proto-5"></p> <p id="proto-6"></p> </div> <script> function Mammal() { this.isMammal = 'yes'; } function MammalSpecies(sMammalSpecies) { this.species = sMammalSpecies; } MammalSpecies.prototype = new Mammal(); MammalSpecies.prototype.constructor = MammalSpecies; var oCat = new MammalSpecies('Felis'); console.log(oCat.isMammal); // 'yes' document.getElementById("proto-5").innerHTML = "is cat a mammal ? : " + (oCat.isMammal); </script>
<div> <p id="proto-7"></p> <p id="proto-8"></p> <p id="proto-9"></p> </div> <script> // create the object to be set as the prototype let Animal = { makeSound() { console.log(`${this.name}, ${this.sound}!`); document.getElementById("proto-7").innerHTML = (`${this.name}, ${this.sound}!`); }, }; // define the Dog object constructor function Dog(name) { this.name = name; this.sound = "bark"; // set prototype of Dog object to Animal Object.setPrototypeOf(this, Animal); } // create dog1 object using the Dog() constructor dog1 = new Dog("Marcus"); // call the makeSound() method of Animal dog1.makeSound(); // Output: Marcus, bark! </script>