Search code examples
javascriptstringprimitive

javascript: do primitive strings have methods?


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?


Solution

  • 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:

    var space = "hello there".indexOf(" ");
    

    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

    var foo = 27.toLocaleString();
    

    because the "." won't be interpreted the way you'd need it to be; however:

    var foo = (27).toLocaleString();
    

    works fine. With string primitives — and booleans, for that matter — the grammar isn't ambiguous, so for example:

    var foo = true.toString();
    

    will work.