ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript デザインパターン学習 Singleton_js オブジェクト指向

JavaScript デザインパターン学習 Singleton_js オブジェクト指向

WBOY
WBOYオリジナル
2016-05-16 18:49:041156ブラウズ
コードをコピーします コードは次のとおりです:

/* 基本シングルトン */
var シングルトン= {
attribute1: true,
attribute2: 10,
method1: function() {
},
method2: function(arg) {
}
}; 🎜>single ソフトウェア パターンの主な用途の 1 つは名前空間です:
/* GiantCorp namespace. */
var GiantCorp = {};
GiantCorp.Common = {
//すべてのオブジェクトとモジュールで使用される共通メソッド。
GiantCorp.ErrorCodes = {
// データを保存するために使用されるオブジェクト リテラル。 >// ページ固有のメソッドと属性を持つシングルトン。
シングルトン モードでプライベート メソッドとプライベート変数を実装するには、
GiantCorp.DataParser = (function() {
//)プライベート属性。
varwhitespaceRegex = /s /;
// プライベートメソッド。
return str.replace(whitespaceRegex, ''); > function stringSplit(str, delimiter) {
return str.split(delimiter);
}
// オブジェクト リテラルで返されるものはすべてパブリックですが、
// のメンバーにアクセスできます上記で作成したクロージャ。
return {
// パブリック メソッド。
stringToArray: function(str, delimiter,tripWS) {
str =tripWhitespace(str); 🎜 >}
var OutputArray = stringSplit(str, delimiter);
return OutputArray;
}
})(); // 関数を呼び出し、返されたオブジェクト リテラルを代入します。 to
// GiantCorp.DataParser.
遅延インスタンス化シングルトン モードの実装:
MyNamespace.Singleton = (function() {
var uniqueInstance; // 単一インスタンスを保持するプライベート属性。
functionconstructor() { // 通常のシングルトン コードはすべてここにあります。
...
}
return {
getInstance: function() {
if(!uniqueInstance) { / / インスタンスが存在しない場合にのみインスタンス化します。 .Singleton.getInstance().publicMethod1();
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。