Immutable const?

jeremy nagel jeremymnagel at
Wed Nov 9 00:33:56 UTC 2016

Ok I may have been misusing terminology. What I mean is more of a deeply
frozen object along the lines of what happens with

The argument for it would be that we've had quite a few bugs where other
modules have modified an instance of an object that gets passed around. We
now often deep clone parameters at the start of methods to avoid this
happening. Would be nicer if deep clone was not required as that has a
performance hit.

Edge cases where custom getters or setters could be avoided by throwing an
error if someone attempted to do `frozen/final/whateverTheTermWouldBe
someComplexObjWithGetters = ...`

Jeremy Nagel
0414 885 787

On Wed, Nov 9, 2016 at 4:58 AM, Isiah Meadows <isiahmeadows at>

> JS doesn't have immutable types, which is why `Object.freeze` simply says
> "don't change this object's own properties". Frozen objects make for nice
> enumerated types, but JS has no notion of immutability. Additionally, you
> have to take into account the internal slots, which freezing objects has no
> effect on (it only has an effect with the internal `object.[[Get]]` and
> `object.[[Set]]` methods).
> -----
> Isiah Meadows
> me at
> On Tue, Nov 8, 2016 at 8:57 AM, Reinis Ivanovs <dabas at> wrote:
>> This idea sounds like having a version of the `const` keyword that also
>> freezes objects, but that's a far cray from what Immutable.js does, which
>> is about persistent data and collection methods. Freezing also doesn't work
>> on things that use mutator methods like Map or Set, so it'd be confusing.
>> On Tue, Nov 8, 2016 at 7:30 AM, jeremy nagel <jeremymnagel at>
>> wrote:
>>> Hi,
>>> was just chatting to colleagues about the utility of *const*. The fact
>>> that it doesn't actually lead to immutable objects or arrays seems to make
>>> it a bit toothless and misleading. Are there any proposals to have an
>>> immutable version of const? I know you could use ImmutableJS but it would
>>> be nice to have this part of the language.
>>> Perhaps the keyword could be *final*.
>>> cheers,
>>> Jeremy
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list