1. ホーム
  2. javascript

[解決済み] JavaScriptでシングルトンを実装する最もシンプルでクリーンな方法

2022-03-23 20:46:10

質問

を実装する最もシンプルでクリーンな方法は何ですか? シングルトンパターン をJavaScriptで作成することはできますか?

どのように解決するのですか?

一番簡単な方法は、単純なオブジェクトリテラルを宣言することだと思います。

var myInstance = {
  method1: function () {
    // ...
  },
  method2: function () {
    // ...
  }
};

シングルトンインスタンスにプライベートメンバが欲しい場合は、次のようにすればよい。

var myInstance = (function() {
  var privateVar = '';

  function privateMethod () {
    // ...
  }

  return { // public interface
    publicMethod1: function () {
      // All private members are accessible here
    },
    publicMethod2: function () {
    }
  };
})();

これは、これまで その モジュールパターン を利用することで、基本的にオブジェクトのプライベートなメンバをカプセル化することができます。 クロージャ .

シングルトンオブジェクトの改変を防ぎたい場合は、以下のようにします。 フリーズさせる を使用すると、ES5 Object.freeze メソッドを使用します。

これにより、オブジェクトはイミュータブルになり、その構造や値が変更されるのを防ぐことができます。

ES6を使用している場合、シングルトンを表現するには ESモジュール は非常に簡単であり、さらに プライベートステート で変数を宣言することで モジュールスコープ :

// my-singleton.js
const somePrivateState = []

function privateFn () {
  // ...
}

export default {
  method1() {
    // ...
  },
  method2() {
    // ...
  }
}

そして、そのシングルトンオブジェクトをインポートするだけで使用することができます。

import myInstance from './my-singleton.js'
// ...