我使用以下测试代码:
function Test() {
}
Test.prototype.MyMethod = {
a: function() {
},
b: function() {
}
}
要运行它,我只是在做:
var test = new Test();
console.debug(test);
在firebug控制台中,我展开了打印的对象并查看__proto__
内部:
在那里找到一个看似无穷无尽的构造函数链 - >原型:
+MyMethod
-constructor
-prototype
+MyMethod
-constructor
-prototype
+MyMethod
-constructor
等等。我在这里做错了吗?为什么原型链似乎无休止?
答案 0 :(得分:9)
prototype
有一个名为constructor
的属性,它引用拥有原型的函数。
这个循环是设计的。
答案 1 :(得分:6)
原型的构造函数返回自身,因此当你展开它时,你只是一遍又一遍地打开相同的结构。它实际上并不是“无限的”。