@Jeremy: something similar could be achieved with a private name (I want
object properties) and accessor properties, but it lacks the advantages
that I mentioned (also outside classes and object literals, the accessor
properties are ugly).
@Claude: that's not easy to use, and also it can be done outside the
execution context.


On Fri, Dec 13, 2013 at 6:20 PM, Claude Pache <[email protected]>wrote:

>
> 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!
>
> —Claude
>
>
> Le 13 déc. 2013 à 14:34, raul mihaila <[email protected]> a écrit :
>
> Hello, was there any proposal for object properties that can be read from
> anywhere but are writable only from the execution context where the name
> associated with the property was defined? Something like:
>
> function Obj() {
>     ro x; // read only name x
>     this.x = 2;
>     this.setX = function (val) {
>         this.x = val;
>     };
> }
>
> var o = new Obj;
>
> o.x; // 2
> o.x = 43; // throws some error
> o.x; // 2
> o.setX(100);
> o.x; // 100
>
> The advantages would be that you are sure that there are no side effects
> when the property is accessed and also I'm guessing you have no function
> call overhead.
>  _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
>
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to