gpt4 book ai didi

javascript - 在 IndexedDb 数据存储中存储一个函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:24:35 26 4
gpt4 key购买 nike

是否有可能以任何方式将函数存储在 IndexedDB 数据存储中?我进行了一些搜索,但在 IndexedDB 支持的数据类型上一无所获。我试过如下简单地将一个函数和一个函数的实例添加到对象存储中,但它没有用。

var myclass = function () {
self = this;
self.name = 'Sam';
self.hello = function () {
console.log('Hello ' + self.name);
};
}

var transaction = db.transaction(['codeobject'], 'readwrite');
var store = transaction.objectStore('codeobject');
var request = store.put({ 'classname': 'someclass', 'object': myclass });

我试过了。

var request = store.put({ 'classname': someclass', 'object': new myclass() });

我真的很想将一个类存储在对象数据库中。即使我不得不将它存储为某种类型的 blob,然后在它输出时将其序列化回一个函数。

谢谢

最佳答案

如果我答对了你的问题,你想做的是序列化整个对象,包括函数?

这是可以做到的,你只需要使序列化函数成为可能。有关它的更多信息,请参阅 my blogpost关于它。

function serialize(key, value) {
if (typeof value === 'function') {
return value.toString();
}
return value;
}

function deserialize(key, value) {
if (value && typeof value === "string" && value.substr(0, 8) == "function") {
var startBody = value.indexOf('{') + 1;
var endBody = value.lastIndexOf('}');
var startArgs = value.indexOf('(') + 1;
var endArgs = value.indexOf(')');

return new Function(value.substring(startArgs, endArgs), value.substring(startBody, endBody));
}
return value;
}

var jsonObj = {
func: function(){ return ""; }
}
// Turns an object into a json string including functions
var objectstring = JSON.stringify(jsonObj, serialize);

// Turns an object string in JSON into an object including functions.
var object = JSON.parse(objectstring , deserialize);

然后可以将您获得的对象字符串保存到 indexeddb 中。

关于javascript - 在 IndexedDb 数据存储中存储一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545031/

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