Array.create and Function.create
matthewwrobb at gmail.com
Fri Jan 11 00:18:10 UTC 2019
Fwiw I'd absolutely love a way to create function objects that inherit from
an existing custom object.
On Thu, Jan 10, 2019, 2:13 PM Sultan <thysultan at gmail.com wrote:
> >what're the benefits over a object indexed by numbers `const o =
> Object.create(null); o = 12; ...`?
> Better "optimisable" heuristics in a similar vain to `TypedArrays`. Most
> engines have perf cliffs with indexed objects after a certain threshold,
> Memory: at some point indexed objects have to grow by some factor(* N of
> the current size) until it reaches and exceeds your desired size resulting
> in more memory use that you bargained for or at some point the engine could
> downgrade it to dictionary-mode for any one reason.
> It is a fickle round to cross when you want predictable throughput
> performance, TypedArrays afford this, but they are not generic(support any
> >About the other function proposal (`Function.create`) I don't see any
> benefits in day to day use having a function without prototype
> Both the Array.create and Function.create are not meant as day-to-day
> They are meant as low-level building blocks for abstraction that might be
> used on a day-to-day, abstractions that wish to guarantee better
> predictable performance.
> >and there'd be no way to get the length or iterate over it if you did.
> You don't need a length property to iterate the array if you own and
> manage the data-strucure:
> Exhibit A:
> var len = 10
> var arr = Array.create(null, len)
> for (var i = 0; i < len; i++) arr[i]
> Exhibit B: (tuple)
> var arr = Array.create(null, 2)
> arr = 'a'
> arr = 'b'
> return a
> In both examples you don't need a length property to access/visit all the
> elements in the array given they are both statically known at creation time.
> On Fri, Jan 11, 2019 at 12:20 AM Jordan Harband <ljharb at gmail.com> wrote:
>> Sorry if I was unclear; it's *impossible* to have an array without a
>> `.length` own property, and there'd be no way to get the length or iterate
>> over it if you did. I'm also not clear on why you'd want to store named
>> properties on an array, especially if you can't iterate it because it
>> doesn't have a length?
>> On Thu, Jan 10, 2019 at 11:04 AM T.J. Crowder <
>> tj.crowder at farsightsoftware.com> wrote:
>>> On Thu, Jan 10, 2019 at 1:54 PM Augusto Moura
>>> <augusto.borgesm at gmail.com> wrote:
>>> > If you don't want the iterable features neither the own properties,
>>> > what're the benefits over a object indexed by numbers `const o =
>>> > Object.create(null); o = 12; ...`?
>>> And re functions, using them as state containers without their usual
>>> features seems like a bad idea^H^H^H^H^H^H^H^H edge case best handled
>>> by `setPrototypeOf` and `delete`. :-)
>>> -- T.J. Crowder
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>> es-discuss mailing list
>> es-discuss at mozilla.org
> es-discuss mailing list
> es-discuss at mozilla.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the es-discuss