基本类型值的字符串化规则为:null转为"null", undefined转换为"undefined",true转为"true"。数字的字符串话则遵循通用规则。
var a = 123;
a.toString(); // '123'
String(a); // '123'
String(null); // 'null'
String(undefined); // 'undefined'
但是,当面对对象的时候,String() 或者 toString() 就不适用了。
var a = {'test':123}
String(a); // '[object Object]'
a.toString(); // '[object Object]'
此时,我们大部分都会想到JSON的方法
JSON.stringify(a); //'{"test":123}'
可是这个方法有一点的缺陷。比如:
JSON.stringify( undefined ); // undefined
JSON.stringify( function(){} ); // undefined
JSON.stringify([1,undefined,function(){},4]); // [1,null,null,4]"
JSON.stringify({ a:2, b:function(){} }); // "{"a":2}"
JSON.stringify(…)在对象中遇到undefined、function和symbol时会自动将其忽略,在数组中则返回null(以保证单元位置不变)