一、toStringjavascript
(1)调用toString方法java
Array是将数组中的每一个元素字符串化,并使用逗号拼接起来数组
object返回的是内部属性[[Class]]的值,[object Object]安全
number则是转换为字符串值,如1转为"1",NaN转为"NaN",1/0转为"Infinity"函数
boolean,true转为"true",false转为"false"工具
(2)JSON字符串化对象
工具函数JSON.stringify(..)在将JSON对象序列化为字符串时也使用了ToString方法ip
JSON.stringify(11) // 11字符串
JSON.stringify("11") // ""11""string
JSON.stringify(null) // "null"
JSON.stringify(true) // "true"
可是JSON.stringify只能转化安全的JSON值,不安全的值包含以下格式
当在object中出现undefined、function、symbol时会自动忽略,在array中遇到则返回null,已保证单元格位置不变。
当包含循环引用的对象时,则会报错。
注意:若对象定义了toJSON()方法,JSON字符串化时会先调用该方法,而后使用它的返回值来进行序列化。(所以能够对JSON不安全的对象,定义一个toJSON方法)
JSON.stringify(..)第二个参数能够是数组或函数,数组定义须要哪些key值须要被返回,函数有两个参数,分别为key和value,若是要忽略某个值,则return undefined,不然return相应的value。
var a = {
b: 11,
c: '11',
d: [1, 2, 3]
}
JSON.stringify(a, ['b', 'c']) // {b: 11, c: '11'}
JSON.stringify(a, function(k, v) {
if (k !== 'c') return v;
})
// {b: 11, c: '11'}
a、字符串、数字、布尔值和null的JSON.stringify(..)规则和toString()方法相同
b、若是传递给JSON.stringify(..)的对象定义了toJSON()方法,那么该方法会在字符串化前调用,以便将对象转化为安全的JSON值。
二、toNumber
ES5规范定义了抽象操做ToNumber
true 转换为1,
false 转换为0,
undefined转换为NaN,
null转换为0,
字符串如果类数字转换为对应的数字,处理失败返回NaN,
对于以0开头的16进制不是按16进制处理,而是按10进制处理,
对象会首先转换为基本类型值,而后再按以上规则进行转换。
转换为基本类型值的方式是检查该对象是否有valueOf()方法,若是有而且返回基本类型值,就使用该值进行强制类型转换。若是没有就使用toString()的返回值(若是存在)来进行强制类型转换。
若是valueOf()和toString()均不返回基本类型值,则产生TypeError错误。
从ES5开始,使用Object.create(null)建立的对象[[Prototype]]属性为null,而且没有valueOf()和toString()方法,所以没法进行强制类型转换。
三、toBoolean
javascript中的值分为如下两类:
(1)能够被强制类型转换为false的值
(2)其余(能够被强制类型转换为true的值)
ES5规范9.2节中定义了抽象操做toBoolean
如下这些是假值:
假值能够强制类型转换为false。从逻辑上讲,假值之外的都应该是真值。但Javascript规范对此并无明确的定义,只是给出了一些实例。