On Oct 1, 2012, at 16:41 , Brendan Eich wrote: > Norbert Lindenberg wrote: >> On Oct 1, 2012, at 15:53 , Brendan Eich wrote: >> >>>> 2) BuiltIn.prototype has state that lets BuiltIn methods successfully >>>> operate on the object, at least as long as they don't modify the state. >>>> >>>> True for ES5 objects, currently also true for ES Internationalization >>>> objects. This means Intl.Collator.prototype can be used as a Collator with >>>> default properties, which applications might find useful. Discussion so >>>> far inconclusive. >>> Mark has a conclusion: don't hide mutable state behind accessors in a >>> prototype. The reason is that Object.freeze can't freeze such state. Is >>> Intl.Collator.prototype's state hidden that way, or exposed to >>> Object.freeze? >> >> All state in Collator& Co. instances is hidden in internal properties, but >> we don't provide any means to modify the state after construction. > > So the state is immutable after construction?
Correct. >>>> 3) The state mentioned in 2) is modifiable. >>>> >>>> True for some ES5 objects (Array, Date, RegExp), >>> Don't forget Object :-P. >> >> I'm thinking of state that goes beyond an empty object and makes a BuiltIn >> instance function as a BuiltIn instance. Object instances have no such state. > > Can Arrays? Remember, 'length' is observable just a data property and the > custom [[DefineOwnProperty]] or [[Put]] hook is not state. length is part of the state, but you're right, sometimes it takes more than state and visible methods. _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss