操作JSON.stringify()方法时,如何不删除对象内部的函数?

JSON.stringify()方法不仅对对象进行字符串化 ,而且还删除了在该对象内部发现的所有函数 。因此,要使该函数 不被删除, 应将其转换为字符串,然后仅应使用JSON.stringify()方法。

在以下示例中,由于该函数 未转换为字符串,因此在通过JSON.stringify()方法进行操作时将其删除,并显示其他属性,如输出所示。

示例

<html>
<body>
<p id="stringify"></p>
<script>
   var person = { name: function () {return Ram + Rahim;},
   designation:"Developer" , city: "Hyderabad" };
   var myJSON = JSON.stringify(person);
   document.getElementById("stringify").innerHTML = myJSON;
</script>
</body>
</html>

输出结果

{"designation":"Developer","city":"Hyderabad"}

 

在以下示例中,在通过JSON.stringify()方法进行操作之前,已使用to String()方法将函数 转换为字符串。因此,当通过JSON.stringify()方法进行操作时,不会删除该函数。

示例

<html>
<body>
<p id="stringify"></p>
<script>
   var obj = { name: function () {return Ram + Rahim;},
   designation:"Developer" , city: "Hyderabad" };
   obj.name = obj.name.toString();
   var myJSON = JSON.stringify(obj);
   document.getElementById("stringify").innerHTML = myJSON;
</script>
</body>
</html>

输出结果

{"name":"function () {return Ram + Rahim;}","designation":"Developer","city":"Hyderabad"}