Thanks for the reply. I realize I don't get a vote here, but IMHO it either needs to be a) well documented that Object.isNumber( new Number(5) ) returns false, or b) support the Number class.
The trouble with the name "isNumber" is that it's ambiguous--it can mean equally "is a number" or "is a Number" thanks to our camelCase conventions. ... and while you're correct that instanceof creates cross-frame issues, perhaps something like this might work (I haven't tested this in a cross-frame way): isNumber: function(object) { return (typeof object == 'number') || (object.constructor == Number.prototype.constructor); } ... although IIRC, comparing constructors and prototypes across frames may not work ... what about converting the constructors to strings, then comparing them? e.x. isNumber: function(object) { return (typeof object == 'number') || (object.constructor.toString() == Number.prototype.constructor.toString()); } The following may also work, but is a bit looser in returning true values: isNumber: function(object) { return (typeof object == 'number') || (object.valueOf && typeof object.valueOf() == 'number'); } Or, you could address the problem in a way similar to how Prototype does browser detection, by checking for the existence of specific properties (e.g. toExponential, toFixed) I guess my point is there are enough smart people here that the issue could be solved. I'm not wedded to having isNumber return true for Number objects (so long as it's clearly documented), but I do think such a decision violates POLS, and flies in the face of self- documenting code/descriptive function names. (btw, the same applies for isString, etc.) TAG On Oct 7, 2008, at 1:55 PM, kangax wrote: > > On Oct 7, 11:17 am, Tom Gregory <[EMAIL PROTECTED]> wrote: >> How 'bout POLS? > > It's a bit hard to tell what "intuitive" definition of "number" is in > a weakly typed language. According to ECMA-262 specs, an object > created with `new Number` is not of type number but rather of type > object. Besides somewhat moot type definition in JS, adding > `instanceof` check introduces notorious cross-frame issues. Taking > care of those issues results in additional complexity (just for the > benefit of taking care of edge cases). > >> >> TAG > > -- > kangax > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype: Core" group. To post to this group, send email to prototype-core@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/prototype-core?hl=en -~----------~----~----~----~------~----~------~--~---