Object Oriented Programming - Remember to Set the Constructor Property when Changing the Prototype

Tell us what’s happening:
Don’t understand how code works in lesson.
What code preceded these lines?

Your code so far

/* // if add such a code, it will be  true, false, true
function Bird(name) {
  this.name = name;
}

let duck = new Bird("Donald");
*/
duck.constructor === Bird;
duck.constructor === Object;
duck instanceof Bird;
// on site: In order, these expressions would evaluate to false, true, and true.

Your browser information:

User Agent is: Mozilla/5.0 (X11; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0

Challenge: Object Oriented Programming - Remember to Set the Constructor Property when Changing the Prototype

Link to the challenge:

If you take a constructor like

function Bird(name) {
  this.name = name;
}

And then add a prototype which is an object like so

Bird.prototype = {
  numLegs: 2,
  eat: function() {
    console.log("nom nom nom");
  },
  describe: function() {
    console.log("My name is " + this.name); 
  }
};

It takes the “constructor” property from that first bird constructor. That’s why duck.constructor = false.

When you make a prototype object, you have to add the constructor property back in; with that original constructor’s name “Bird” as the property’s value

{ constructor: Bird }

Bird.prototype = {
  constructor: Bird,
  numLegs: 2,
  eat: function() {
    console.log("nom nom nom");
  },
  describe: function() {
    console.log("My name is " + this.name); 
  }
};