String
The String()
constructor creates string objects. Primitive strings are turned into objects behind the scenes if you call a method on them as if they were objects. Omitting new
gives you primitive strings.
Creating a string object and a string primitive:
> var s_obj = new String('potatoes'); > var s_prim = 'potatoes'; > typeof s_obj; "object" > typeof s_prim; "string"
The object and the primitive are not equal when compared by type with ===
, but they are when compared with ==
which does type coercion:
> s_obj === s_prim; false > s_obj == s_prim; true
length
is a property of the string objects:
> s_obj.length; 8
If you access length
on a primitive string, the primitive is converted to an object behind the scenes and the operation is successful:
> s_prim.length; 8
String literals work fine too:
> "giraffe".length;
7