0

我正在研究 Coffeescript 的输出,试图深入了解幕后发生的事情。当我声明一个新类 Person 时,会创建一个名为 Person 的变量,其中包含一个 IIFE。

var Person;

Person = (function() {
  function Person() {
    this.doThing();
  }

  Person.prototype.doThing = function() {};

  return Person;

})();

让我感到困惑的是,IIFE 本身包含一个名为 Person 的命名函数声明。这会覆盖原始的 Person 变量,还是 Javascript 认为这是一个新的范围?当 doThing 添加到 Person 的原型时,具体指的是哪个对象?

也许我的问题暴露了更深层次的困惑:)

4

1 回答 1

2

IIFE 作为一个函数,创建了一个新的作用域,以便'class'很好地隐藏所有逻辑。PersonIIFE的内部被返回并分配给Person它的外部,但是如果 IIFE 返回了其他东西,那么这就是外部的Person

doThing被赋值给了原型Person里面,但是又既然Person被返回了,那就是在IIFE里面引用的同一个函数对象。

于 2013-02-17T03:53:31.093 回答