我遇到了一个将JSON解析成对象数组的问题。
我有三个JavaScript类:
1. Pet 2. Cat继承Pet 3. Dog继承Pet
我想创建一组Pet对象,然后将其以JSON格式存储在浏览器本地存储中。
问题是:当我检索JSON并将其解析为对象数组时,元素的原型从Cat或Dog更改为Object,所以当我测试时。
创建数组后,我需要将其保存在浏览器本地存储中。
我有三个JavaScript类:
1. Pet 2. Cat继承Pet 3. Dog继承Pet
我想创建一组Pet对象,然后将其以JSON格式存储在浏览器本地存储中。
问题是:当我检索JSON并将其解析为对象数组时,元素的原型从Cat或Dog更改为Object,所以当我测试时。
pets[0] instanceof Cat // always false
pets[0] instanceof Dog // always false
有没有一种方法可以将元素的原型保留为原始的而不是对象?
这些类:
function Pet(imageUrl, name, soundUrl) {
this.imageUrl = imageUrl;
this.name = name;
this.soundUrl = soundUrl;
this.talk = function() {
};
}
function Cat(imageUrl, name, soundUrl, favoriteFood) {
Pet.apply(this,arguments);
this.favoriteFood=favoriteFood;
}
Cat.prototype=new Pet();
Cat.prototype.constructor = Cat;
function Dog(imageUrl, name, soundUrl, walkingTime) {
Pet.apply(this,arguments);
this.walkingTime=walkingTime;
}
Dog.prototype=new Pet();
Dog.prototype.constructor = Dog;
创建数组后,我需要将其保存在浏览器本地存储中。
var pets=[];
var cat = new Cat('imageUrl','name','soundUrl','favoriteFood');
pets.push(cat);
localStorage.setItem('pets', JSON.stringify(pets));
获取数组:
if (localStorage.getItem('pets') !== null)
{
var pets = JSON.parse(localStorage.getItem('pets'));
}