(エッセンス)2020年6月25日JavaScriptプレミアム編クローズ


クローズドパッケージの特徴
1.関数ネスト関数2.関数の内部は外部のパラメータと変数3を参照することができる.パラメータと変数はゴミ回収メカニズムでは回収されず、メモリに保存されます.
クローズドパッケージのメリット
1.変数がキャッシュに存在することを望む.全体的な汚染を避ける.
クローズドパッケージの2つの方法
1.関数を戻り値とする
function create(){
    let a = 1;
    return function(){
        console.log(`       :${a}`)
    }
}

let a = 0;
let getFunc = create();
getFunc();   //  1


2.関数を入力パラメータとする
function func(fn){
	let b = 1;
	fn();
}
function fn1(){
	console.log(b);
}
let b = 0;
const fn2 = func(fn1);
fn2()    //0

クローズドパッケージの適用シーン
//          API
function createChace(){
	let data = {}; //                
	return{
		get(key){
			return data[key]
		},
		set(key,val){
			data[key] = val;
		}	
	}
}

let chace = createChace();
chace.set("name","ace");
console.log(chace.get("name"));    //ace


中のdataは外部からアクセスできず、提供されたgetとsetメソッドでしか対応できません.