Hacker News new | ask | show | jobs
by qsort 1999 days ago
It's extremely consistent. I'd say that's the only consistent way to do it, if you want to preserve the semantics of JS objects. Lua does pretty much the same.

> Saying that they're objects is not reasonable.

This is a fair point, in the alternate universe where JS objects have different semantics.

> in most languages lists are objects, and they don't also do key-value pairs at the same time

This is a dynamic language we're talking about. You are very welcome to think dynamic languages are inferior choices, an opinion that I personally would share, but that's a discussion for another time. In the context of JS, that behavior is neither unreasonable nor inconsistent.

1 comments

Python is also dynamic. That has nothing to do with this.

  >>> l = []
  >>> l.x = "hello"
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
  AttributeError: 'list' object has no attribute 'x'
Always adding arbitrary properties to an object is not a dynamic thing, it's just a bit silly. At best you could say it's a weak typing thing, but even then, it doesn't need to be.