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?
//s2.someNewFunc();

Thanks

Answers:

Answer
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.

However

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.

Answer

Same thing!

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

typeof s1   //string
typeof s2   //string
Answer

Both will behave the same way.

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

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

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. [...]

Answer

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

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.