Object Literal

Để sử dụng singleton pattern ở trong JavaScript, chúng ta chỉ cần tạo ra một object literal.

Ví dụ:

const user = {
    name: 'Peter',
    age: 25,
    job: 'Teachcer',
    greet: function() {
        console.log('Hello!');
    }
}

Object literal này là duy nhất và bất cứ sự thay đổi nào trên các đối tượng tham chiếu đều sẽ ảnh hưởng đến nó.

const user1 = user;
user1.name = 'Mark';
 
console.log(user.name); // 'Mark'
 
console.log(user1.name); // 'Mark'
 
console.log(user === user1);

Module Pattern

Cũng có thể sử dụng module pattern để triển khai singleton pattern như sau:

const singleton = (function() {
    let instance;
    
    function init() {
        return {
            name: 'Peter',
            age: 24,
        }
    };
    
    return {
        getInstance: function() {
            if(!instance) {
                instance = init();
            }
            
            return instance;
        }
    }
})();

Resources