【发布时间】:2015-01-03 11:40:33
【问题描述】:
我正在维护一些遗留代码,我注意到使用了以下用于定义对象的模式:
var MyObject = {};
(function (root) {
root.myFunction = function (foo) {
//do something
};
})(MyObject);
这样做有什么目的吗?是否等同于只做以下事情?
var MyObject = {
myFunction : function (foo) {
//do something
};
};
我不打算按照自己的喜好重构整个代码库,但我真的很想了解这种迂回定义对象的方式背后的原因。
谢谢!
【问题讨论】:
-
在您的确切示例中没有区别。如果你扩展它,可能会有所不同,但也会有不同的方法发挥作用。
-
没什么区别,可以这么说,对象是作为引用的副本传递的,所以即使在 IIFE 内部定义 myFunction,它仍然可以在外部访问。
-
@adeneo 不是这个例子,
myFunction可以使用一些外部定义的变量,这些变量不能从外部访问。 See my answer
标签: javascript javascript-objects