Basically, my question is about how Javascript handles regex literals.
Contrasting with number, string and boolean where literals are primitive data types and corresponding Number, String and Boolean objects exist with seamless type conversion, are regex literals anonymous instances of the RegExp object or is this a case of regex being treated like primitive data with seamless type conversion to RegExp?
“The complete Reference Javascript, 2nd edition, Powell and Schneider (MH)” contradicts itself – at one place the authors say that /regex/ is automatically typecasted into RegExp when needed and at another place they say that /regex/ is nothing but an instance of RegExp!
EDIT: Please provide a reference to a reliable source
Here’s what the spec has to say:
There is no primitive regex type that autoboxes to an object in the same way as
stringornumber.Note, however, that not all browsers implement the “instantiate-once-per-literal” behavior, including Safari and IE6 (and possibly later), so portable code shouldn’t depend on it. The abortive ECMAScript 4 draft would have changed the behavior to match those browsers:
Also, some browsers (Firefox <3, Safari) report
typeof /regex/as"function", so portable code should avoidtypeofon RegExp instances—stick withinstanceof.