今天稍晚些时候,我正在浏览ejhon.com的幻灯片,发现了以下内容:
将此代码给出
我有一个函数对象,但我没有执行该函数,而是创建了一个新实例(我并不确定发生了什么)。然后我使用xyz存储值,并通过原型方法使用这些值来完成一些工作。
令我惊讶的是,在使用FireBug进行调试时,xyz不存在。没有变量附加到窗口对象上。为什么?
我进行了更多的调试,发现xyz对象附加到window > object上,但在DOM中它不明显且没有痕迹。调试窗口中还出现了一个新节点,称为“scopechain”,其中包含一个调用和xyz对象的值。
好的,底层发生了什么?这是我应该坚持使用的好方法还是应该寻找替代方案? 我已经查看了一些问题和答案,主要是想知道这种方法在后台做了什么。
将此代码给出
function katana () {
this.myvar = true;
}
katana ();
console.info (myvar);
在我编译代码后的那一刻,我认为myvar被附加到katana函数上了。实际上它会被附加到window对象上,这会污染全局命名空间。
我回到我的项目中,它们都使用相同的方法...只是略微有所不同。
function katana () {
this.myvar = true;
}
var xyz = new katana();
console.info (myvar);
我有一个函数对象,但我没有执行该函数,而是创建了一个新实例(我并不确定发生了什么)。然后我使用xyz存储值,并通过原型方法使用这些值来完成一些工作。
令我惊讶的是,在使用FireBug进行调试时,xyz不存在。没有变量附加到窗口对象上。为什么?
我进行了更多的调试,发现xyz对象附加到window > object上,但在DOM中它不明显且没有痕迹。调试窗口中还出现了一个新节点,称为“scopechain”,其中包含一个调用和xyz对象的值。
好的,底层发生了什么?这是我应该坚持使用的好方法还是应该寻找替代方案? 我已经查看了一些问题和答案,主要是想知道这种方法在后台做了什么。