ホームページ >ウェブフロントエンド >jsチュートリアル >js デザイン パターン - シングルトン パターンの使用
今回は、jsデザインパターン-シングルケースモードと、jsシングルトンモードを使用する際の注意点を紹介します。以下は実際的なケースです。見てみましょう。
1. 概念: 従来の開発エンジニアの観点から見ると、単一関心モデルは、各クラスがインスタンスを 1 つだけ持つことを保証するものであり、インスタンスが存在するかどうかを最初に確認します。存在しない場合は、再度作成されます。これにより、各クラスにインスタンス オブジェクトが 1 つだけ存在することが保証されます。 JavaScript では、シングルトンは
名前空間 のプロバイダーとして機能し、オブジェクトにグローバルにアクセスするための一意のアクセス ポイントを提供します。 123 2. 機能と注意事項:
機能: 1. モジュール間の通信
2. 特定のクラスのオブジェクトはシステム内に 1 つだけ存在できます
3. 独自の
属性とメソッドを保護します 注意事項: 1. 以下に注意してくださいthis の使用
2. クロージャは簡単にメモリ リークを引き起こす可能性があります
3. 継承を使用する場合は new の使用に注意してください。
を実装する最も簡単な方法は、多数のプロパティとメソッドを含めることができるオブジェクト リテラルを使用することです。
var firstObject = { property1: "something", property2: "something else", method1: function () { console.log('hello web!'); } };このオブジェクトを拡張したい場合は、独自のプライベート メンバーを提供し、これらの変数と関数の宣言をクロージャーを介して内部にカプセル化します。プライベートまたはパブリック メソッドを実装できます。もう一度次のコードを見てみましょう:
var firstObject= function () { /* 这里声明私有变量和方法 */ var privateVariable = 'something private'; function showPrivate() { console.log(privateVariable); } /* 公有变量和方法(可以访问私有变量和方法) */ return { publicMethod: function () { showPrivate(); }, publicVar: 'the public can see this!' }; };var single = firstObject(); single.publicMethod(); // 输出 'something private'console.log(single.publicVar); // 输出 'the public can see this!'使用するときだけ初期化したい場合、どうすればよいでしょうか?リソースを節約するために、次のように、これらのコードを別の
コンストラクター で初期化できます:
var firstjObiect= (function () { var instantiated; function init() { /*这里定义单例代码*/ return { publicMethod: function () { console.log('hello world'); }, publicProperty: 'test' }; } return { getInstance: function () { if (!instantiated) { instantiated = init(); } return instantiated; } }; })();/*调用公有的方法来获取实例:*/firstjObiect.getInstance().publicMethod();その使用シナリオを見てみましょう
var firstObjectTester = (function () { //参数:传递给单例的一个参数集合 function Singleton(args) { //设置args变量为接收的参数或者为空(如果没有提供的话) var args = args || {}; //设置name参数 this.name = 'SingletonTester'; //设置pointX的值 this.pointX = args.pointX || 6; //从接收的参数里获取,或者设置为默认值 //设置pointY的值 this.pointY = args.pointY || 10; } //实例容器 var instance; var _static = { name: 'SingletonTester', //获取实例的方法 //返回Singleton的实例 getInstance: function (args) { if (instance === undefined) { instance = new Singleton(args); } return instance; } }; return _static; })();var singletonTest = firstObjectTester .getInstance({ pointX: 5 }); console.log(singletonTest.pointX); // 输出 5: 以下は、システム間のさまざまなモードでの通信調整に使用されます。シングルトン モードの実装例へのリンクは次のとおりです:
Textarea データ保存中の Html から Txt への変換と表示中の Txt から HTML への変換の解決策
方法 1、
function Universe() { // 判断是否存在实例 if (typeof Universe.instance === 'object') { return Universe.instance; } // 其它内容 this.start_time = 0; this.bang = "Big"; // 缓存 Universe.instance = this; // 隐式返回this}// 测试var uni = new Universe();var uni2 = new Universe(); console.log(uni === uni2); // true方法 2、
function Universe() { // 缓存的实例 var instance = this; // 其它内容 this.start_time = 0; this.bang = "Big"; // 重写构造函数 Universe = function () { return instance; }; }// 测试var uni = new Universe();var uni2 = new Universe(); uni.bang = "123"; console.log(uni === uni2); // trueconsole.log(uni2.bang); // 123この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、他の関連記事に注目してください。 PHP中国語ウェブサイトで! 推奨書籍:
以上がjs デザイン パターン - シングルトン パターンの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。