Is there a difference between String(x) and ''

Is there a difference? Will string 2 inherit different object prototypes?

var s1 = 1234 + '';
var s2 = String(1234);

//s1.someNewFunc();   error?



var s1 = 1234 + '';

Creates a string literal. This is a javascript language primitive.

var s2 = String(1234);

The String() function also returns a primitive string literal. s2 will have the same members as s1 because they are both the same type.


var s3 = new String("1234");

Will create an object of type String rather than a primitive string literal. This does have different members and is of type object.


Same thing!

var s1 = 1234 + '';
var s2 = String(1234);

typeof s1   //string
typeof s2   //string

Both will behave the same way.

Also, there is a nice explanation about string primitives vs. objects here:

Distinction between string primitives and String objects

[...] String literals (denoted by double or single quotes) and strings returned from String calls in a non-constructor context (i.e., without using the new keyword) are primitive strings. JavaScript automatically converts primitives to String objects, so that it's possible to use String object methods for primitive strings. [...]


Javascript allows you to treat primitive values as though they were objects. It does so by doing an on-the-fly coercion of the primitive to an object. That's why, even though primitives have no properties, something like this is perfectly fine:

"abcde".substr(1,3); //bcd
true.valueOf(); //true


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.