const Wizard = (function() {
const _private = new WeakMap();
const internal = (key) => {
if (!_private.has(key)) {
_private.set(key, {});
}
return _private.get(key);
};
class Wizard {
constructor(name, house) {
internal(this).name = name;
internal(this).house = house;
}
getName() {
return internal(this).name;
}
setName(name) {
internal(this).name = name;
}
getHouse() {
return internal(this).house;
}
setHouse(house) {
internal(this).house = house;
}
}
return Wizard;
}());
const harrypotter = new Wizard('Harry Potter', 'Gryffindor');
console.log(harrypotter);
console.log(harrypotter.getName());
harrypotter.setName('Arry Pottr');
console.log(harrypotter.getName());