Making Object Literals a sub-class of Object

Guylian Cox guyliancox at gmail.com
Fri Oct 14 13:14:37 UTC 2016


If you want to check that your variable is a plain old object and not some
other class, you can use

`Object.getPrototypeOf(x) === Object.prototype`

`Object.getPrototypeOf({}) === Object.prototype // true`

`Object.getPrototypeOf(new Map()) === Object.prototype // false`

Le ven. 14 oct. 2016 à 15:05, Brian Ninni <ninni.brian at gmail.com> a écrit :

> I did a quick search and didn't find any recent mentions of this topic.
>
> On more than one occasion I've had to determine whether something was a
> plain old Object, or some other class. This involves checking that the
> given object was NOT an instanceof any other acceptable class.
>
> Array, RegExp, Function, and Class Literals all already create an Object
> sub-class, so why not Object Literals?
>
> It doesn't have to operate any differently than a standard Object does
> (though it allows room for deviation in the future), just have a different
> constructor so it can easily be determined whether it is a literal or not.
>
> This would break code that uses `obj.constructor === Object`, but that
> code is not always reliable since the 'constructor' property can be
> overwritten without any side-effects anyway.
>
> Are there any other major reasons why this is a bad idea?
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20161014/97028b49/attachment.html>


More information about the es-discuss mailing list