KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
A while ago, I offered-up a JavaScript design pattern (the Module Pattern - see below) that I got from a John Resig example as part of a solution to someone’s question and I received the following comment: “…that pattern is a bit over engineered and not that good. Still leaking into global-scope. and your not opening yourself to async loaders. But it is better then just ad-hoc coding !” So… If “leaking” into global scope means “your object gets appended to the browsers window (object)”…then everything already gets appended (globally): This “leaks” into global scope: window.jQuery …just call: window.jQuery and it resolves as a function(); This “leaks” into global scope: function HelloWorld() { alert(‘Howdy’); } …just call: window.HelloWorld() and you will get ‘Howdy’. This “leaks” into global scope: var myVariable = 10; …just call: window.myVariable and you will get 10 If the commenter is correct, then all the above “leak” into global-scope. So, personally, I don’t see a way NOT to “leak” into global-scope as even your form controls exists there (as well). As such, here are my questions… What is meant by “leaking” into global-scope? Why is that bad? How do you avoid it? When wanting to create persistent custom-objects, why is the Module Pattern (below) bad? Design patterns let you encapsulate complex logic, is encapsulation suddenly bad simply because we’re writing in JavaScript ? Or...is this commenter simply wrong? <
Tags (comma-separated)
Save Edits
Cancel