[解決済み] 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'
// ...
関連
-
vueディレクティブv-bindの使用と注意点
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】JavaScriptで10進数を検証する - IsNumeric()
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue+ElementUIによる大規模なフォームの処理例
-
vue for 登録ページ効果 vue for sms 認証コードログイン
-
vueの補間表現とv-textディレクティブの違いについて
-
vueが定義するプライベートフィルタと基本的な使い方
-
Vueの「データを聴く」原則を解説
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
[解決済み】Javaでシングルトンパターンを実装するための効率的な方法は何ですか?[クローズド]