2014-12-03 3 views
0

Я видел этот шаблон кода javascript в нескольких местах. Может ли кто-нибудь предоставить мне хорошее объяснение? Заранее спасибо!Почему этот шаблон обертывания javascript

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

Я был особенно обеспокоен '(someVar || (someVar = {})' –

+1

Это похоже на простое значение по умолчанию. –

+0

'someVar || (someVar = {}' также может быть 'someVar || {} ' – KooiInc

ответ

2

Это javascript module pattern. Эффективно вы создаете инкапсуляцию, в котором вы можете хранить функции (государственные, частные), переменные и другие модули. С этой моделью вы не загрязняете глобальную. Его можно использовать для имитации пакетов java, пространств имен .NET.

Например, я разделил свой проект на следующие пространства имен, используя этот шаблон.

  • ProjectName
  • ProjectName.helpers
  • ProjectName.services
  • ProjectName.events

Каждый пространство имен имеет свои функции, поэтому они не смешиваются. Я могу использовать одно и то же имя функции в разных пространствах имен. Вы можете писать частные функции, которые можно использовать только из одного модуля, недоступного для публики. Это один из способов добавления объектно-ориентированных принципов в javascript.

+0

Можете ли вы поделиться некоторыми ключевыми моментами? –

Смежные вопросы