0
私はスニペットを見つけましたが、それは簡単な方法で書くことができません。オブジェクトは第二の例では関数内で作成された理由を関数のプライベート関数の参照を使ってオブジェクトを作成する
var printer = (function() {
var printerInstance;
var obj = {
f1: function() {},
f2: function() {}
};
return {
getInstance: function() {
if(!printerInstance) {
printerInstance = obj;
}
return printerInstance;
}
};
})();
そして
var printer = (function() {
var printerInstance;
function create() {
function f1() {}
function f2() {}
return {
f1: f1,
f2: f2
}
}
return {
getInstance: function() {
if(!printerInstance) {
printerInstance = create();
}
return printerInstance;
}
};
})();
は、私は理解していない:誰かが下の2つのスニペットの違いは何であるかを教えてもらえます。どうか明らかにしてください。
両方の例では、インスタント関数アプリケーションは新しいスコープを作成して、 'printerInstance'、' obj'および 'create'が周囲のスコープに漏れないようにしています。 – Sylwester