为什么Javascript"类“;实现使用同名的函数声明覆盖类名
Why do Javascript "class" implementations overwrite the class name with an identically-named function declaration?
我正在研究Coffeescrapt的输出,试图深入了解幕后发生的事情。当我声明一个新类Person时,会创建一个名为Person的变量,其中包含一个IIFE。
var Person;
Person = (function() {
function Person() {
this.doThing();
}
Person.prototype.doThing = function() {};
return Person;
})();
让我想到这里的是,IIFE本身包含一个名为Person的命名函数声明。这是覆盖了原始的Person变量,还是Javascript认为这是一个新的范围?当doThing被添加到Person的原型中时,它具体指的是哪个对象?
也许我的问题暴露了更深层次的困惑:)
IIFE作为一个函数,创建了一个新的作用域,以便很好地隐藏所有'class'
逻辑。IIFE内部的Person
被返回并分配给外部的Person
,但如果IIFE返回了其他内容,那么外部的Person
就是这样
doThing
被分配给内部的原型Person
,但由于Person
被返回,它与IIFE内部的函数对象引用相同。
相关文章:
- 在循环中分配json值时,值被覆盖
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 谷歌地图固定位置覆盖
- 直接在函数声明上使用function.prototype.bind
- 只覆盖箭头键滚动事件
- JQuery覆盖不更改单选选项
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 获取HTML属性中CSS声明的值
- 对API数据使用声明性绑定
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 传单中如何在更改基层时启用/禁用覆盖层
- 可以Resharper在我的javascript函数声明中添加分号
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 返回语句后的函数声明全局变量不会被覆盖
- Javascript-覆盖先前在另一个函数中声明的样式
- 为什么函数声明覆盖全局对象的不可写属性
- 函数中未声明的JavaScript变量覆盖使用
- 像alert()这样的声明方法是否会覆盖Javascript中内置的alert()方法?
- 为什么Javascript"类“;实现使用同名的函数声明覆盖类名
- javascript/jquery中的声明和覆盖函数