我想深入研究javascript的语言特定构造“原型”。 这是我的学习目的代码:
var f = function() {};
f.ext = 1;
f.prototype.pext = 2;
当我现在使用firebug调试此代码时,我得到以下内容:
这种无限的嵌套来自哪里? 让我们从顶部开始(OK =未理解):
f(好)
- 分机(OK)
- 原型(OK)
- pext(OK)
- 构造函数(我现在卡住了)
那是谁的构造函数?为什么我们有这个infinte嵌套?
答案 0 :(得分:5)
它只是因为f === f.prototype.constructor
,它们是相同的,Firebug将它们显示为循环引用。
与:
相同var a = {},
b = a;
a.b = b;
你也会在这里看到无限的引用。
答案 1 :(得分:3)
当你这样做时
Foo = function () {
// Do something
};
然后你会有这个
Foo.prototype.constructor == Foo
因为Foo
是Foo
的构造函数:
var foo = new Foo(); // <-- Foo is the constructor.
我建议阅读:http://beej.us/blog/data/javascript-prototypes-inheritance/