一个被自动调用的方法
在执行某些操作时,由js脚本解析器自动执行
可以被重写
JS中十分常见,因为是object原型上的方法,null,undefined没有此方法(因为没有对应的基本包装类型)
最常用的功能是把表达式的值转为字符串
每一个字符串都有一个该方法,用于返回当前字符串的副本
基于对象的JavaScript
2.toString() // 会报错, Uncaught SyntaxError: Invalid or unexpected token,因为JS是基于对象,不是面向对象,这里的点 . 有两种理解方法,一种是理解为小数点,一种理解为对方法的调用,这里我们希望理解为后者,但是解释器并不这么认为,解释器是这样理解的(2.)toString() 所以报错
但是(2).toString() “2”,在解析 .toString() 之前,已经把前面部分转成了Number对象
2…toString() “2” 避免第一个点被解析为小数点的点,第二个点才是对方法的调用
var a = 2; a.toString() “2”
2 .toString() “2”
抛出异常仅限于是整数的情况
用法
将一个数值转为二进制、八进制、十进制、十六进制
2..toString(2)
2..toString(8)
2..toString(10)
2..toString(16)
范围是2-36
判断变量类型
Object.prototype.toString.call([ ])
//但是无法判断自定义对象的类型
其他
undefined + ''.toString() // 'undefined'
new Date().toString() // Thu Jun 13 2019 23:28:40 GMT+0800 (中国标准时间)
基本类型能不能调toString()
var bool = new Boolean(true); bool.toString() // "true"
难道是基本类型也可以调用toString方法??基本类型不是对象,不可以调用任何方法,基本包装类型对应的基本类型去调用tostring()方法,会返回原值,程序在读取到一个基本类型值的时候会在后台创建一个与之对应的基本包装类型对象,从而去调用一些方法
String() 可以将任何类型的值转换为字符串,包括null和undefined