MDN states:
primitive, primitive value
A data that is not an object and does
not have any methods. JavaScript has 5
primitive datatypes: string, number,
boolean, null, undefined. With the
exception of null and undefined, all
primitives values have object
equivalents which wrap around the
primitive values, e.g. a String object
wraps around a string primitive. All
primitives are immutable.
So when we call a "s".replace or "s".anything is it equivalent to new String("s").replace and new String("s").anything?
No, string primitives do not have methods. As with numeric primitives, the JavaScript runtime will promote them to full-blown “String” objects when called upon to do so by constructs like:
In some languages (well, Java in particular, but I think the term is in common use) it’s said that the language “boxes” the primitives in their object wrappers when appropriate. With numbers it’s a little more complicated due to the vagaries of the token grammar; you can’t just say
because the “.” won’t be interpreted the way you’d need it to be; however:
works fine. With string primitives — and booleans, for that matter — the grammar isn’t ambiguous, so for example:
will work.