为什么这种包装javascript的模式

时间:2014-12-03 12:24:17

标签: javascript design-patterns

我在几个地方看到过这种javascript代码模式。 有人能给我一个很好的解释吗?提前谢谢!

var someVar;
(function(someVar){
    someVar.foo = 'bar';
    //...
})(someVar || (someVar={});

1 个答案:

答案 0 :(得分:2)

这是javascript module pattern.实际上,您正在创建一个封装,您可以在其中存储函数(公共,私有),变量和其他模块。使用这种模式,您不会污染全局。它可以用来模拟java的包,.NET命名空间。

例如,我使用此模式将项目划分为以下命名空间。

  • 项目名
  • ProjectName.helpers
  • ProjectName.services
  • ProjectName.events

每个命名空间都有自己的功能,因此它们不会混合。我可以在不同的命名空间中使用相同的函数名称。您可以编写只能从同一模块使用的私有函数,这些函数是公共无法访问的。这是向javascript添加面向对象原则的方法之一。