Douglas Crockford has a really good talk on \"The Better Parts\" of ES6. Among other things, he encourages a move away from prototypal inheritance in favor of class free OOP
You should watch the whole video, he explains it at later in the video.
function constructor(spec) {
let {member} = spec,
{other} = other_constructor(spec),
method = function () {
// accesses member, other, method, spec
};
return Object.freeze({
method,
other
});
}
It's the revealing module pattern returning a frozen object.