Define static properties and prototype properties with the class syntax

Glen Huang curvedmark at gmail.com
Sat Dec 13 01:54:40 PST 2014


But allowing getter & setter already makes it dangerous:

let _bar = {}
class Foo {
	static get bar() { return _bar; }
}

Objects that have Foo.prototype in the prototype chain can do "this.bar.a = 1", and the change won’t be shadowed.

I found myself looking for a way to define static properties because I want to do this:

function Menu(options) {
	this.options = Object.assign({}, Menu.defaults, options);
}
Menu.defaults = { hidden: false };

I want to expose the defaults property so it can be modified by users. This pattern is very ubiquitous in es5. I wonder if the class syntax could allow this pattern to be carried to es6?


More information about the es-discuss mailing list