在JavaScript中,除了undefined和null之外,都具有valueOf和toString方法。下面将根据数据类型对这两中方法进行说明。
valueOf(返回最适合该对象类型的原始值)
- String 字符串类型,返回字符串本身
- Number 数值类型,返回数值本身
- Boolean 布尔类型,返回布尔值本身
- Object 对象类型,返回对象本身
综上所述,一般而言valueOf返回值为对象本身。
toString (将该对象的原始值以字符串形式返回。)
- String 字符串类型,返回字符串本身
- Number 数值类型,返回字符串形式
- Boolean 布尔类型,返回字符串形式
- Object 对象类型,返回【object,object】
- Function 函数类型,返回字符串形式
- Array 数组类型,返回字符串形式
综上所述,toString是将对象的原始值以字符串形式返回。
应用顺序
- 在数值运算里,会优先调用valueOf(),如a+b
- 在字符串运算里,会优先调用toString(),如alert(a+b)
强制转换:Number()、Boolean()、String()
Number()
- String 字符串类型,除了纯数字的字符串转换为对应的数值外,其他全是NaN
- Number 数值类型,返回数值本身
- Boolean 布尔类型 ,true返回1,false返回0
- Object 对象类型,除了只含有一个数组的对象转换为对应的数值外,其他全是NaN
Number()转换的结果为NaN,和对应的数值。一般可转换的为纯数字。
String()
- String 字符串类型,返回字符串本身
- Number 数值类型,返回字符串形式
- Boolean 布尔类型,返回字符串形式
- Object 对象类型,返回【object,object】
- Function 函数类型,返回字符串形式
- Array 数组类型,返回字符串形式
- null 空,返回字符串形式
- undefined ,返回字符串形式
String()相对于toString()而言,可以进行null和undefined的转换。
Boolean()
Boolean()除了以下五个值的转换结果为false,其他的值全部为true:
- ""
- NaN
- 0
- null
- undefined
类数组的转换
- 类数组就是拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理); 但是不具有数组方法(如push, pop等)的一类对象。
- 常见的类数组包括:函数的参数 arguments, DOM 对象列表,jq对象(比如 $(“div”))等。
转换方法:
- 数组原型中的slice方法:Array.prototype.slice.call()
- es6扩展运算:[...array]
- es6新增Array.from(array)