Javascript字符串文字和字符串Object处理如此有线

时间:2018-05-30 07:07:28

标签: javascript ecmascript-6

我在javascript中的字符串文字和字符串对象类型之间大混淆。

这里是代码

var a = new String( "aaaa" ); 
var b='adddd';

console.log(a) //String('aaaa')
console.log(b) //adddd

console.log(typeof a) //ojbect
console.log(typeof b) //string


console.log(Object.prototype.toString.call( a )) //[object String]
console.log(Object.prototype.toString.call( b )) //[object String]

两个字符串的 typeof 不同,但是当由 toString()生成时,它返回相同的内容。为什么以及如何????

1 个答案:

答案 0 :(得分:2)

  

为什么以及如何????

Object.prototype.toStringthis值转换为对象值:

  
      
  1. 如果this值为undefined,请返回" [对象未定义]"
  2.   
  3. 如果this值为null,请返回" [对象为空]"
  4.   
  5. O成为!ToObject(this value)
  6.   
  7. ...
  8.   

https://www.ecma-international.org/ecma-262/8.0/index.html#sec-object.prototype.tostring

在原始字符串上调用ToObject与调用new String(primitiveStringValue)相同。