JavaScript patterns help us write more maintainable and scalable code. In this article, we'll explore some advanced patterns that every JavaScript developer should know.
Module Pattern
The Module Pattern is one of the most important patterns in JavaScript. It allows you to create encapsulated modules with private and public methods.
const MyModule = (function() {
let privateVariable = 0;
function privateFunction() {
console.log('Private function called');
}
return {
publicMethod: function() {
privateVariable++;
privateFunction();
return privateVariable;
},
getCount: function() {
return privateVariable;
}
};
})();
// Usage
MyModule.publicMethod(); // 1
MyModule.getCount(); // 1
Observer Pattern
class EventEmitter {
constructor() {
this.events = {};
}
on(event, callback) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(callback);
}
emit(event, data) {
if (this.events[event]) {
this.events[event].forEach(callback => callback(data));
}
}
off(event, callback) {
if (this.events[event]) {
this.events[event] = this.events[event].filter(cb => cb !== callback);
}
}
}