数组的toString()方法默认把所有的单元字符串化了以后再用逗号,连接起来。
JSON 字符串化 工具函数 JSON.stringify(..) 在将 JSON 对象序列化为字符串时也用到了 ToString。
所有安全的 JSON 值(JSON-safe)都可以使用 JSON.stringify(..) 字符串化。安全的 JSON 值是指能够呈现为有效 JSON 格式的值。 为了简单起见,我们来看看什么是不安全的 JSON 值。undefined、function、symbol (ES6+)和包含循环引用(对象之间相互引用,形成一个无限循环)的对象都不符合 JSON 结构标准,支持 JSON 的语言无法处理它们。
JSON.stringify(..) 在对象中遇到 undefined、function 和 symbol 时会自动将其忽略,在 数组中则会返回 null(以保证单元位置不变)。
我们可以向 JSON.stringify(..) 传递一个可选参数 replacer,它可以是数组或者函数,用 来指定对象序列化过程中哪些属性应该被处理,哪些应该被排除,和 toJSON() 很像。 如果 replacer 是一个数组,那么它必须是一个字符串数组,其中包含序列化要处理的对象 的属性名称,除此之外其他的属性则被忽略。 如果 replacer 是一个函数,它会对对象本身调用一次,然后对对象中的每个属性各调用 一次,每次传递两个参数,键和值。如果要忽略某个键就返回 undefined,否则返回指定 的值。
代码实例:
(1) 字符串、数字、布尔值和 null 的 JSON.stringify(..) 规则与 ToString 基本相同。
(2) 如果传递给 JSON.stringify(..) 的对象中定义了 toJSON() 方法,那么该方法会在字符 串化前调用,以便将对象转换为安全的 JSON 值。
ToNumber:
从 ES5 开始,使用 Object.create(null) 创建的对象 [[Prototype]] 属性为 null,并且没 有 valueOf() 和 toString() 方法,因此无法进行强制类型转换。
ToBoolean:
以下这些是假值:
• undefined
• null
• false
• +0、-0 和 NaN
• "" //空字符
JavaScript 中的值可以分为以下两类: (1) 可以被强制类型转换为 false 的值 (2) 其他(被强制类型转换为 true 的值)
假值对象:
真值:
空数组、空对象和空函数都是真值!!