While debugging the JavaScript prototype chain I came across that when we define a Constructor function, the constructor-->prototype chain is never-ending, it keeps on expanding. I have attached a screenshot and a sample code also for reference.

function Person(first, last, age, gender, interests) {
this.name = {
'first': first,
'last' : last
};
this.age = age;
this.gender = gender;
}
const person1 = new Person("foo", "bar", 24, "Male")
My question is, does JavaScript access it by reference/walking up the chain or is JavaScript actually storing it in memory
The chain is not ever-expanding, it contains a circular reference.
As explained on MDN:
Every constructor function has a
prototypeproperty whose value is an object containing aconstructorproperty. Thisconstructorproperty points to the original constructor function.
The following example demonstrates this:
function X() {}
const x = new X();
// test for strict equality
console.log(x.constructor === x.constructor.prototype.constructor); // true