Firebug显示构造函数的无限递归

时间:2013-02-07 21:27:22

标签: javascript firebug

我想深入研究javascript的语言特定构造“原型”。 这是我的学习目的代码:

var f = function() {};
f.ext = 1;
f.prototype.pext = 2;

当我现在使用firebug调试此代码时,我得到以下内容: enter image description here

这种无限的嵌套来自哪里? 让我们从顶部开始(OK =未理解):

f(好)
  - 分机(OK)
  - 原型(OK)
    - pext(OK)
      - 构造函数(我现在卡住了)

那是谁的构造函数?为什么我们有这个infinte嵌套?

2 个答案:

答案 0 :(得分:5)

它只是因为f === f.prototype.constructor,它们是相同的,Firebug将它们显示为循环引用。

与:

相同
var a = {},
    b = a;
a.b = b;

你也会在这里看到无限的引用。

答案 1 :(得分:3)

当你这样做时

Foo = function () {
    // Do something
};

然后你会有这个

Foo.prototype.constructor == Foo

因为FooFoo的构造函数:

var foo = new Foo(); // <-- Foo is the constructor.

我建议阅读:http://beej.us/blog/data/javascript-prototypes-inheritance/