作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一种将函数分配给对象的方法,然后将其存储在本地存储中。我尝试了下面的代码,但我得到:“Uncaught TypeError: mydog.woof is not a function”
Storage.prototype.setObject = function(key, value) {
this.setItem(key, JSON.stringify(value));
}
Storage.prototype.getObject = function(key) {
var value = this.getItem(key);
return value && JSON.parse(value);
}
var Dog = function(name) {
this.name = name
}
Dog.prototype.woof = function woof() {
console.log('woof woof, I am ' + this.name);
}
// Instantinate your objects with `new` keyword
var dog = new Dog('Lovely')
dog.woof()
//Store in the localstorage
localStorage.setObject('mydog', dog);
//Get from the localstorage
var mydog = localStorage.getObject('mydog');
mydog.woof();
最佳答案
I need a way to assign functions to object that then will be stored in the localstorage.
网络存储仅存储字符串。
最好的办法是以另一种方式解决问题,也许存储一个用于在脚本代码中的对象中查找函数的 key 。
或者,给定您的 Dog
示例,通常在这些情况下我所做的就是拥有一个与 Dog
关联的函数(甚至是 Dog
构造函数),它接受狗的普通对象版本并创建使用该数据初始化的 Dog
版本。例如,大致:
Dog.fromPlainObject = function(plain) {
var d = new Dog();
Object.keys(plain).forEach(function(key) {
d[key] = plain[key];
});
return d;
};
...或该主题的十几个变体中的任何一个。
您可以存储函数的字符串版本,然后通过eval
重新构建它,但我真的不会。使用数据存储,而不是代码。
关于javascript - 如何将函数分配给存储的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41889338/
我是一名优秀的程序员,十分优秀!