Skip to content

Instantly share code, notes, and snippets.

@jaandrle
Forked from juandopazo/gist:2901426
Created September 10, 2018 07:59
Show Gist options
  • Save jaandrle/8ce7f40202fb59b96f429ee15ea1b975 to your computer and use it in GitHub Desktop.
Save jaandrle/8ce7f40202fb59b96f429ee15ea1b975 to your computer and use it in GitHub Desktop.
Privates and WeakMaps
// Based on a gist by @rwaldron
// https://gist.github.com/2897761
function privatize() {
var map = new WeakMap();
return function private(obj) {
var data = map.get(obj);
if (!data) {
map.set(obj, data = {});
}
return data;
};
}
var Person = (function () {
var private = privatize();
function Person(name) {
private(this).name = name;
}
Person.prototype.say = function (msg) {
return private(this).name + ' says: ' + msg;
};
return Person;
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment