Я предполагаю, что использование этого шаблона - это новая жара, но я не понимаю, что это за преимущество, и я не понимаю его видимость.
Образец:
(function(window, document, undefined){
window.MyObject = {
methodA: function() { ... },
methodB: function() { ... }
};
})(window, document)
У меня есть несколько вопросов об этом.
Есть ли конкретное преимущество для инкапсуляции объекта, подобного этому?
Почему окна и документы подаются вместо обычного доступа?
Почему передается undefined
?
Является ли прикрепление объекта, который мы создаем непосредственно к окну, особенно хорошая идея?
Я привык к тому, что я назову в стиле Crockford для инкапсуляции Javascript (потому что я получил его от видеороликов Douglas Crockford Javascript).
NameSpace.MyObject = function() {
// Private methods
// These methods are available in the closure
// but are not exposed outside the object we'll be returning.
var methodA = function() { ... };
// Public methods
// We return an object that uses our private functions,
// but only exposes the interface we want to be available.
return {
methodB: function() {
var a = methodA();
},
methodC: function() { ... }
}
// Note that we're executing the function here.
}();
Является ли один из этих шаблонов функционально лучше другого? Является ли первая эволюцией другой?