我正在创建一个应用程序,它根据Simple-Storage中访问过的每个页面的url存储一个唯一的对象。
var ss = require("sdk/simple-storage");
ss.storage[naming()] = new entryConstructor;
naming()是一个为每个对象生成自定义名称的函数。
通常可以将变量声明为属性全局对象(Window)。这可能用于存储吗?
答案 0 :(得分:0)
我真的不明白问题是什么。是吗:
简短回答:是的,你可以,是的,你可以!
你当然可以毫无问题地写作:
ss.storage
string
非常像一个javascript对象。你不能将功能成员添加到它(如果我没有弄错的话)。
如果您有一个返回ss.storage[naming()] = new entryConstructor();
的函数,您当然可以使用该函数访问/设置存储属性/条目(我喜欢命名它),假设返回值是javascript compliant member name:
function naming() {
/* returns a valid javascript object property names */
// building of the property name here...
}
其中:
entryConstructor
和let name = naming();
let myEntry;
if (ss.storage.hasOwnProperty(name)) {
// use stored value...
myEntry = ss.storage[name];
} else {
// create value...
myEntry = new entryConstructor()...
}
// make edits... then :
ss.storage[name] = myEntry;
// or handle update on user input, contentScript detach or exports.onUnload
是allowed types之一(可能是您自己创建的对象)我喜欢将存储条目视为JSON可序列化数据。
在ss.storage中设置条目时要小心。在尝试设置其值之前,应检查条目是否存在,以防您需要跨多个会话的持久数据。如果您每次开始会话时都设置值,那么之前会话中注册的旧值将永远丢失:
perf_month,Jan-15,Feb-15,Mar-15,Apr-15,May-15,Jun-15,Jul-15,Aug-15,Sep-15,Oct-15,Nov-15,Dec-15,Jan-16,Feb-16,Mar-16<br>
open_acc,5843,7126,7682,5517,6965,7519,2579,2572,8108,356,8950,718,1214,6523,8068<br>
inter_sales,6086,6910,3094,1027,7797,8109,6510,8451,311,5682,9716,8561,8044,7141,8790<br>
exter_sales,6345,3933,9529,1457,7920,8608,3910,971,6070,5859,7899,5342,3466,2005,4357<br>
close_acc,6594,1712,1358,1830,3437,7454,3697,6621,9882,1308,3069,3576,9583,5780,6455<br>
balance,4128,1490,8354,3470,7506,9309,7637,9082,4029,1256,9010,6117,1162,8028,1078<br>
payment,1179,8452,8040,2082,8351,1494,1877,2772,5985,477,7153,1857,1572,5698,1436<br>
附注: