gpt4 book ai didi

javascript - 如何将函数分配给存储的对象?

转载 作者:行者123 更新时间:2023-11-28 18:09:38 27 4
gpt4 key购买 nike

我需要一种将函数分配给对象的方法,然后将其存储在本地存储中。我尝试了下面的代码,但我得到:“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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com