<分区>
我在将 JSON 解析为对象数组时遇到问题。
我有三个 JavaScript 类
- 宠物
- 猫扩展宠物
- 狗扩展宠物
我想创建 Pet 对象数组,然后我想将它作为 JSON 存储在浏览器本地存储中。
问题:
当我检索 JSON 并将其解析为对象数组时,元素的原型(prototype)从 Cat 或 Dog 更改为 Object,因此当我测试时
pets[0] instanceof Cat // always false
pets[0] instanceof Dog // always false
有没有办法让元素的原型(prototype)保持为原来的非对象?
类:
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'));
}