当你需要为对象关联一些私有数据,但又不想这些数据出现在对象的属性链上时,可以使用WeakMap。例如,你可以使用WeakMap来存储组件的私有状态或元数据,而不污染组件的原型链。
const privateData = new WeakMap();
function MyClass() {
// 私有数据不会暴露在MyClass的实例上
privateData.set(this, { count: 0 });
}
MyClass.prototype.increment = function() {
const data = privateData.get(this);
data.count++;
};
const obj = new MyClass();
obj.increment();
obj.increment();
obj.increment();
const data = privateData.get(obj);
console.log(data);//{count: 3}
网友评论