如何JSON.stringify和JSON.parse没有得到一个空的对象?
我问这个问题的原因是因为我想为我的对象使用LocalStorage。 正如你可能知道的,当使用LocalStorage时,你必须对JSON进行处理,然后将它们解析回javascript对象。
我正在尝试JSON.stringify一个对象的方法,然后解析它,但我得到的只是一个空对象。
请看看这段代码。
Person.js
function Person(name, telePhone) {
this.getName = function () {
return name;
}
this.setName = function (_name) {
name = _name;
}
this.getTelePhone = function () {
return telePhone;
}
this.setTelePhone = function (_telePhone) {
telepPhone = _telePhone;
}
};
Javascript.js
window.onload = function () {
var name = "John";
var telePhone = "073-2335662";
var personObject = new Person(name, telePhone);
console.log(personObject);
// returns: Person
console.log(personObject.getName());
//returns: John
var test = JSON.stringify(personObject);
var newPersonObject = JSON.parse(test);
console.log(newPersonObject);
//returns: Object
console.log(newPersonObject.getName());
//returns: Uncaught TypeError: Object #<Object> has no method 'getName'
};
任何建议为什么这个Person对象在JSON.stringify和JSON.parse之后是空的并且失去了所有的方法?
函数不是有效的JSON数据类型。 当然,这些函数所拥有的变量范围不能被序列化。
您需要将数据直接存储在对象上以序列化它。
JSON具有“对象”(键/值对)和“数组”(有序列表)样式结构,以及string
, number
, true
, false
和null
。
http://json.org/
JSON.stringify不会序列化函数,因为它们不是数据。 JSON专门存储真实数据和结构变量。 如果你想存储函数,你可以使用.toString()
方法将函数源代码转换为字符串,并将其转换回函数,您可以使用eval()创建方法,但这是一个单独的问题。
您可能需要编写自己的序列化程序来执行这种任务,这个想法非常有趣,如果有现成的解决方案,我不会感到惊讶。
链接地址: http://www.djcxy.com/p/40665.html上一篇: How to JSON.stringify and JSON.parse without getting an empty object?