I would like to know if the module pattern or Constructor/protoType pattern is more applicable to my work.
Basically I am using unobtrusive javascript — the HTML document has a reference to the .js file.
My understanding of the module pattern:
- call an INIT method (which is basically a public method i can create and return using the module pattern)
- In the INIT method, assign all click events etc.
This sounds like the perfect pattern for my situation, as I don’t need to create Objects and inheritance hierarchies etc.
My understanding of the Constructor/Prototype pattern:
- for creating objects
- for using inheritance (i.e. Subtypes of a supertype)
Am I correct, that for providing unobtrusive javascript, the module pattern is ideal?
Constructor-functions and prototypes are one of the reasonable ways to implement classes and instances. They don’t quite correspond to that model so you typically need to choose a particular scheme or helper method to implement classes in terms of prototypes. (Some background on classes in JS.)
The module pattern is typically used for namespacing, where you’ll have a single instance acting as a store to group related functions and objects. This is a different use case from what prototyping is good for. They’re not really competing with each other; you can quite happily use both together (eg put a constructor-function inside a module and say
new MyNamespace.MyModule.MyClass(arguments)).