是否可以以任何方式将函数存储在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() });
我真的想要在对象db中存储一个类.即使我必须将它存储为某种类型的blob,然后将其序列化为一个函数.
谢谢
如果我的问题正确,你想要做的是序列化整个对象,包括函数?
这是可能的,您只需要可以序列化函数.有关它的更多信息,请参阅我的博客文章.
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);
然后,您获得的objectstring可以保存到indexeddb中.