Confusion with Object.prototype.toString and primitive string datatype

# Arup Rakshit (9 years ago)

Consider the below simple code :

'k' instanceof String; // false
new String('k') instanceof String; // true

Now, When I am inspecting them as below why in both cases the output comes as [object String] ?

The below is understood as per the result of the instanceof operator.

Object.prototype.toString.call( new String('k') );  // "[object String]”

My confusion comes when I see the below code output :

Object.prototype.toString.call( 'k' );  // "[object String]”

Can anyone please explain it ?

# Arup Rakshit (9 years ago)

On Jan 1, 2016, at 10:56 PM, Bob Myers <rtm at gol.com> wrote:

Seems like a good Stack Overflow question, take it there.

Don’t we have any mailing list to ask JavaScript questions? I like mailing list rather than StackOverflow.com :(

# Domenic Denicola (9 years ago)

This mailing list is largely meant for the further development of JavaScript as a language (new feature design, spec review, etc.), and not for questions on how JavaScript works. StackOverflow is indeed a better venue for such questions.

# /#!/JoePea (9 years ago)

And to answer, the 'k' in Object.prototype.toString.call( 'k' ) get auto-boxed. That's why.

# Garrett Smith (9 years ago)

Because javascript is dynamically typed, conversion from objects to primitive values and vice versa. This is done respectively by the internal [[ToPrimitive]] and [[ToObject]] methods. See Object.prototype.toString, step 3

Let O be ToObject(this value).

people.mozilla.org/~jorendorff/es6-draft.html#sec-toobject

ToObject, creates a String object whose value is that of the passed-in string.

# Arup Rakshit (9 years ago)

Hello All,

Although as you said this list is not meant for question/answers, you explained it. Thanks for the explanation. This is my first and last question in this list as per the list standards. I would still say if there is another list for question/answers the community will be much more helpful than earlier.

Again thanks to everyone.