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

