<html>
<head>
<title></title>
<script type="text/javascript">
function init()
{
var student={
name:"Bill",
age:12,
grade:3,
id:"0802020114",
subject:["math","Chinese","English"],
toJSON:function(){
return this.name+"_"+this.id;
}
};
var jsonText=JSON.stringify(student);
}
</script>
</head>
<body>
<input type="button" value="测试" />
</body>
</html>
以上代码在student对象上定义了一个toJSON()方法,该方法返回name和id的组合。最后jsonText的值如下:
"Bill_0802020114"
toJSON()可以作为函数过滤器的补充,因此理解序列化的内部顺序十分重要。假设把一个对象传入JSON.stringify(),序列化该对象的顺序是:
(1)如果存在toJSON()方法而且能够通过它取得有效值,则调用该方法。否则,按默认顺序执行序列化。
(2)如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。
(3)对第(2)步返回的每个值进行相应的序列化。
(4)如果提供了第三个参数,执行相应的格式化。
无论是考虑滴定toJSON()方法,还是考虑使用函数过滤器,或者需要同时使用两者,理解这个顺序都是至关重要的。
您可能感兴趣的文章: