The Connection Between Functions and Objects

When you create an object via new F(), its [[Prototype]] is set to whatever F.prototype is at that moment.

let animal = { eats: true };

function Rabbit(name) { this.name = name; }
Rabbit.prototype = animal;

let rabbit = new Rabbit('White Rabbit');
console.log(rabbit.eats); // true — inherited from animal

The Default constructor Property

By default, F.prototype has a single property constructor pointing back to F itself. This lets objects know " who created me " :

function Cat(name) { this.name = name; }
let tom = new Cat('Tom');
console.log(tom.constructor === Cat); // true
Important

F.prototype is only used during new F(). Changing it later does NOT affect already-created objects.