Proposal: allow primitives to be explicitly returned from constructors

Isiah Meadows isiahmeadows at gmail.com
Fri Apr 20 15:31:30 UTC 2018


I normally name it `isReferenceType` or similar, but was just reusing
the name originally used here. For the purposes of this, my
`isReferenceType` is equivalent to the `value === new function () {
return value }` check, while still avoiding diving into builtins. I
was just focused on a correct equivalent.

I know `typeof` can be rather loose at times with old IE (and heck, it
once was in other engines, too - consider the old V8 bug `typeof /foo/
=== "function"`).

My question was whether it was feasible *now*, and specifically with
respect to non-primitives (where `isReferenceType(value) === false`).
So far, the only problem explained here was with a fairly unique use
case I offered an alternative of, and I'm just trying to explore to
see if the breaking nature has changed enough it's worthy to consider
lifting the restriction.

-----

Isiah Meadows
me at isiahmeadows.com

Looking for web consulting? Or a new website?
Send me an email and we can get started.
www.isiahmeadows.com


On Fri, Apr 20, 2018 at 9:46 AM, T.J. Crowder
<tj.crowder at farsightsoftware.com> wrote:
> On Fri, Apr 20, 2018 at 2:23 PM, Oriol _
> <oriol-bugzilla at hotmail.com> wrote:
>> No, `typeof` is not reliable, because it's implementation-defined
>> for non-standard non-callable exotic objects.
>>
>> For example, old IE used to return `"unknown"` in various cases.
>
> Also `"object"` for host-provided functions (such as
> `document.createElement`); IE8 still does that. (Thankfully IE11 doesn't.)
> (I suppose that would have passed Isiah's `isObject` test anyway, but the
> point is that `typeof` is, sadly, a weak reed...)
>
> -- T.J. Crowder
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>


More information about the es-discuss mailing list