JavaScript中通过闭包来实现私有变量的一种方法
'use strict';
const SecretHolder = (function () {
const secrets = new WeakMap();
return class {
constructor() {
this.test = secrets;
}
setSecrete(secret) {
secrets.set(this, secret);
}
getSecrete() {
return secrets.get(this);
}
}
})();
const a = new SecretHolder();
const b = new SecretHolder();
a.setSecrete("SecreteA");
b.setSecrete("SecreteB");
console.log(a.getSecrete());
console.log(b.getSecrete());
故意将secrets
指派给匿名类,然后,查看secrets,发现secrets储存了两个key-value对,证明了只存在一个函数块,而块中私有变量secrets
统筹管理类实例与类实例的私有变量的关系,即key是实例,value是实例的私有变量。
#####
愿你一寸一寸地攻城略地,一点一点地焕然一新
#####