Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript infinite prototype chain

I am using the following test code:

function Test() {

 }

 Test.prototype.MyMethod =  {
    a: function() {

    },
    b: function() {

    }
 }

And to run it I'm simply doing:

var test = new Test();
console.debug(test);

In the firebug console, I expand the object that was printed and look inside of __proto__:

In there find a seemingly unending chain of constructor -> prototype:

+MyMethod
-constructor
  -prototype
     +MyMethod
     -constructor
        -prototype
           +MyMethod
           -constructor

and so on. Did I do something wrong here? Why does the prototype chain seem unending?

like image 447
opl Avatar asked Jan 19 '11 21:01

opl


2 Answers

prototypes have a property called constructor that refers to the function that owns the prototype.

This cycle is by design.

like image 189
SLaks Avatar answered Sep 20 '22 16:09

SLaks


The prototype's constructor refers back to itself, so as you 'unfold' it, you are just opening the same structure over and over again. It is not actually 'infinite.'

like image 29
jk. Avatar answered Sep 20 '22 16:09

jk.