问题
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?
回答1:
prototypes have a property called constructor that refers to the function that owns the prototype.
This cycle is by design.
回答2:
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.'
来源:https://stackoverflow.com/questions/4740849/javascript-infinite-prototype-chain