This is described in §23.3 of the specification:
, "/" WeakMap, , WeakMap, / WeakMap.
, , , - .
, a Map , , - , .
MDN :
WeakMap . , , WeakMap .
WeakSet .
... ?
, , /, , .
, , , , :
let Thing = (() => {
var privateData = new WeakMap();
class Thing {
constructor() {
privateData[this] = {
foo: "some value"
};
}
doSomething() {
console.log(privateData[this].foo);
}
}
return Thing;
})();
privateData. . WeakMap, , Thing . WeakMap , , Thing , WeakMap ; , , .
/ : let hash = Object.create(null); hash[index] = something;
Map, index ( ) ( , ).