Чтобы немного обновить этот ответ в отношении @marc, я тоже отдаю должное ded и немного обновил его, чтобы быть с последними обновлениями:
(function (name, definition, context, dependencies) {
if (typeof context['module'] !== 'undefined' && context['module']['exports']) { if (dependencies && context['require']) { for (var i = 0; i < dependencies.length; i++) context[dependencies[i]] = context['require'](dependencies[i]); } context['module']['exports'] = definition.apply(context); }
else if (typeof context['define'] !== 'undefined' && context['define'] === 'function' && context['define']['amd']) { define(name, (dependencies || []), definition); }
else { context[name] = definition(); }
})('events', function () {
// Insert code here
return {
sayHi: function(name) {
console.log('Hi ' + name + '!');
}
};
}, (this || {}));
Объект в конце - это ссылка либо на родительскую, либо на текущую область, допустим, у вас есть пакет, который вы пишете, и это всего лишь кусок пирога, хорошо, что контекст может быть объектом с разделением имен, и это просто кусок этого пирога.
Кроме того, если вы хотите иметь зависимости, в конце после вашей области видимости есть необязательный параметр, который поддерживает массив, в этом случае параметр определения может использовать каждую зависимость в качестве аргумента. Кроме того, зависимости, перечисленные в массиве, потребуются внутри платформы node-js для вашего удобства.
См. Реальный пример: https://gist.github.com/Nijikokun/5192472.
person
Nijikokun
schedule
18.03.2013