在JavaScript中,哪些类型支持toString()?

时间:2017-08-15 05:12:07

标签: javascript

好处:

'hello'.toString()    // "hello"
let obj = {}
obj.toString()        // "[object Object]"

坏事:

undefined.toString()  // throws TypeError
null.toString()       // throws TypeError

还有其他类型会引发.toString()方法吗?

4 个答案:

答案 0 :(得分:4)

来自toString()的{​​{3}}

  

每个对象都有一个toString()方法,当要将对象表示为文本值或者以期望字符串的方式引用对象时,会自动调用该方法。默认情况下,toString()方法由来自Object 的每个对象继承。

如果变量类型不是对象,它将抛出。

所以你最好的选择是在打电话之前检查test instanceof Object

值得一提的是,您的代码适用于1.8.5版本

var toString = Object.prototype.toString;
toString.call(undefined)  // gives [object Undefined]
toString.call(null)       // gives [object Null]
  

注意:从JavaScript 1.8.5开始toString()调用null返回[object Null],undefined返回[object Undefined],如第5版ECMAScript和随后的勘误表中所定义。请参阅Using_toString()_ to_detect_object_class。

答案 1 :(得分:3)

从Object继承的每个obj都必须使用string方法。

从javascript开始 从JavaScript 1.8.5开始toString()调用null返回[object Null],undefined返回[objectUndefined]。

您可以在此链接上阅读更多相关信息: You can read more about it at this link

答案 2 :(得分:1)

在原型链中没有此方法的对象上调用toString()将导致错误。例如:

let a = Object.create(null); 
a.toString() //TypeError

答案 3 :(得分:1)

toString是在Object上定义的,因此除undefined和null之外的任何类型都将继承toString