Skip to content

Instantly share code, notes, and snippets.

@oosby
Last active February 17, 2017 20:29
Show Gist options
  • Save oosby/190c98f650946d552f86801a84cb0954 to your computer and use it in GitHub Desktop.
Save oosby/190c98f650946d552f86801a84cb0954 to your computer and use it in GitHub Desktop.
javascript enum
function enummaker(obj = {}) {
let newEnum = obj;
newEnum[Symbol.iterator] = function() {
let i = 0;
let keys = Object.keys(this);
return {
next: function() {
let value = keys[i];
i++;
return {
done: (i > keys.length) ? true : false,
value: value
}
}
}
}
return Object.freeze(newEnum);
}
var statusEnum = enummaker({ ACTIVE: 'ACTIVE', INACTIVE: 'INACTIVE', PENDING: 'PENDING'});
for (let status of statusEnum) {
console.log(status)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment