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