so `Object(unknown) instanceof Number` it is then ¯\_(ツ)_/¯ On Mon, Jun 15, 2015 at 9:14 PM, Bradley Meck <bradley.m...@gmail.com> wrote:
> Well this also has slightly odd behavior since the Object operation will > fail for OrdinaryHastInstance if for primitives > https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ordinaryhasinstance > > On Mon, Jun 15, 2015 at 3:09 PM, Andrea Giammarchi < > andrea.giammar...@gmail.com> wrote: > >> point of views I guess, you could fix forever the inconsistency via >> >> ```js >> Number.prototype[Symbol.hasInstance] = function () { >> return typeof this.valueOf() === 'number'; >> }; >> ``` >> >> and fix String, Boolean, Symbol too (why not) and whatever else. >> `instanceof` is the new `typeof` ^_^ (naa, just joking) >> >> Best Regards >> >> >> >> On Mon, Jun 15, 2015 at 7:39 PM, Bradley Meck <bradley.m...@gmail.com> >> wrote: >> >>> Yes, with regards to O being an Object. >>> >>> This seems a bit strange to me since things like: >>> >>> ``` >>> Number.prototype.toString = function () {return 'overriden';} >>> >>> (1)+'' // "1" >>> >>> >>> String(1) // "1" >>> >>> (1).toString() // "overriden" >>> ``` >>> >>> Implicit string coercion does not box the object. >>> String constructor does not box the object. >>> >>> Only the `.` operator which requires an Object boxes the object. >>> >>> `instanceof` works on non-objects but I think is the only case of an >>> operator working on both primitives and objects causing boxing. >>> >>> Is there a reason constructors could/should be allowed to override >>> `instanceof` for primitives? This just seems odd to have this cause boxing >>> while `1 instanceof Number` is `false`. >>> >>> >>> On Mon, Jun 15, 2015 at 12:20 PM, Kevin Smith <zenpars...@gmail.com> >>> wrote: >>> >>>> >>>>> https://people.mozilla.org/~jorendorff/es6-draft.html#sec-instanceofoperator >>>>> calls GetMethod on C without checking if it is an Object, this means `1 >>>>> instanceof Foo` could be affected by mutating >>>>> `Number.prototype[Symbol.hasInstance]`. >>>>> >>>> >>>> I assume you mean "without checking if O is an object" >>>> >>>> >>>>> I am assuming this is unintended? >>>>> >>>> >>>> IIUC the point of @@hasInstance is to allow the programmer to define >>>> completely arbitrary semantics for "instanceof" when applied to "C", even >>>> if C is a built-in. Do you see a problem with this behavior? >>>> >>>> >>> >>> _______________________________________________ >>> es-discuss mailing list >>> es-discuss@mozilla.org >>> https://mail.mozilla.org/listinfo/es-discuss >>> >>> >> > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss