Claude Pache (2013-12-13T16:20:14.000Z)
domenic at domenicdenicola.com (2013-12-18T03:43:50.677Z)
If you are not paranoid, you can just use nonwritable properties. That forces you to use `Object.defineProperty` to change the value, so you are protected against accidental assignments. function Obj() { Object.defineProperty(this, 'x', { value: 2, writable: false, enumerable: true, configurable: true }) this.setX = function (val) { Object.defineProperty(this, 'x', { value: val }) } } o = new Obj o.x = 17 // assignment will fail; moreover, in strict mode, an error is thrown o.x // 2 o.setX(18) o.x // 18 It doesn't prevent the user from hanging themself with `Object.defineProperty(o, 'x', { value: 17 })`; but at least, it won't be by chance!