DeveloperBreeze

Javascript Programming Tutorials, Guides & Best Practices

Explore 93+ expertly crafted javascript tutorials, components, and code examples. Stay productive and build faster with proven implementation strategies and design patterns from DeveloperBreeze.

Advanced JavaScript Patterns: Writing Cleaner, Faster, and More Maintainable Code

Tutorial August 27, 2024
javascript

function Subject() {
    this.observers = [];
}

Subject.prototype = {
    subscribe: function(fn) {
        this.observers.push(fn);
    },
    unsubscribe: function(fnToRemove) {
        this.observers = this.observers.filter(fn => fn !== fnToRemove);
    },
    notify: function(data) {
        this.observers.forEach(fn => fn(data));
    }
};

const subject = new Subject();

function Observer1(data) {
    console.log('Observer 1:', data);
}

function Observer2(data) {
    console.log('Observer 2:', data);
}

subject.subscribe(Observer1);
subject.subscribe(Observer2);

subject.notify('Hello Observers!');
// Output:
// Observer 1: Hello Observers!
// Observer 2: Hello Observers!

subject.unsubscribe(Observer2);

subject.notify('Hello Observer 1!');
// Output:
// Observer 1: Hello Observer 1!
  • Decouples the subject from its observers.
  • Supports dynamic subscription and notification.