有人可以向我解释这里发生了什么导致我的属性被附加到窗口对象:
var MyObject = (function () {
this.property1 = "prop1";
return this;
})();
// window.property1 now exists as well as MyObject.property1
这是"对"这样做的方法:
var MyObject = (function () {
var MyObject = {};
MyObject.property1 = "prop1";
return MyObject;
})();
// only MyObject.property1 now exists
答案 0 :(得分:5)
您正在调用一个函数。无论是否匿名,它都是一种功能。函数有上下文,this
关键字。
您没有提供任何背景信息,因此使用了window
。
尝试:
var MyObject2 = (function() {
this.property1 = "prop1";
return this;
}).call(this);
在这里,你明确地将上下文定义为“无论当前上下文是什么” - 当然,这可能再次是window
,但是它可能不会 - 如果没有看到更多代码就无法真实地说明。 / p>