我正在研究 Coffeescript 的输出,试图深入了解幕后发生的事情。当我声明一个新类 Person 时,会创建一个名为 Person 的变量,其中包含一个 IIFE。
var Person;
Person = (function() {
function Person() {
this.doThing();
}
Person.prototype.doThing = function() {};
return Person;
})();
让我感到困惑的是,IIFE 本身包含一个名为 Person 的命名函数声明。这会覆盖原始的 Person 变量,还是 Javascript 认为这是一个新的范围?当 doThing 添加到 Person 的原型时,具体指的是哪个对象?
也许我的问题暴露了更深层次的困惑:)