Juriy Zaytsev wrote:
> When implementing ES3.1 `Object.keys` in ES3, one of the steps in
> algorithm of `Object.keys` seemed a bit confusing:
>
> ...
> 1. If the Type(O) is not Object, throw a TypeError exception.
> ...
>
> Based on my understanding, I implemented this check as:
>
> function isPrimitive(o) {
> return o == null || /^(boolean|number|string)$/.test(typeof o);
> }
Yes, that's correct.
('o == null' is non-obviously equivalent to
'o === null || o === undefined'.)
> I then received a response from one of our developers that `isObject`
> could probably be implemented as:
>
> function isObject(o) {
> return typeof o === 'object' && o !== null;
> }
That's wrong; host objects and functions have Type Object.
> Am I correct in my understanding that when specs say Type(O) should be
> an Object, this implies that a value is not an instance of `Object` but
> an object in a sense of a collection of properties, and that, for
> example, a Function object should be considered an Object type as well?
Yes.
--
David-Sarah Hopwood ⚥
_______________________________________________
Es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss