Would not work since @@hasInstance takes priority over OrdinaryHasInstance and would box it.
On Mon, Jun 15, 2015 at 3:19 PM, Andrea Giammarchi < [email protected]> wrote: > so `Object(unknown) instanceof Number` it is then ¯\_(ツ)_/¯ > > On Mon, Jun 15, 2015 at 9:14 PM, Bradley Meck <[email protected]> > 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 < >> [email protected]> 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 <[email protected]> >>> 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 <[email protected]> >>>> 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 >>>> [email protected] >>>> https://mail.mozilla.org/listinfo/es-discuss >>>> >>>> >>> >> >> _______________________________________________ >> es-discuss mailing list >> [email protected] >> https://mail.mozilla.org/listinfo/es-discuss >> >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

