我想通过创建一个通用函数来执行获取,然后使用sessionStorage.<variable>
存储获取的数据,从而减少使用XMLHttpRequest()
或ActiveXObject()
从服务器获取信息的I/O开销。问题是,我事先不知道变量名都是什么,我故意不想知道。
我在想,如果有某种方法可以">取消引用"变量,例如,我们可以轻松地在BASH
中做到这一点,这将是微不足道的。例如,如果获取的数据在 newData 中,并且从中获取的文件的名称在 dataFile 中,如果取消引用语法是,比如$(<variableName>)
,那么可以编写这样的代码来存储和获取数据:
//Store the data:
sessionStorage.$(dataFile) = newData;
//Fetch the data:
var storedData = sessionStorage.$(dataFile);
明白了吗?好的,现在,我该怎么做?!
。我能看到的唯一另一种解决方法是非常笨拙的 - 制作数组,一个带有名称,另一个带有值 - 一定有更简单的方法!蒂亚。
与往常一样,最好先访问文档。在那里你可以看到,sessionStorage(如localStorage或Map(根本没有任何属性(除了指向内部存储器的隐藏属性,但那是另一回事(,而是通过其get
或set
方法使数据可用:
sessionStorage.set("a name", "a value");
然而,session/localStorage 也提供了全局 getter/setter,所以理论上可以做到:
sessionStorage.name = "value";
如果键名称是动态的,则可以使用括号表示法:
sessionStorage[aName] = aValue;
但是,他们甚至没有在文档中提到它,因此此功能既没有得到广泛支持,也不是良好的编码风格。
试试这个。不完全确定我清楚地遵循了您的问题,但是如果您在其他代码中使用变量名称作为字符串时遇到问题,我会尝试这样做。
var_param = GET_YOUR_VAR_SOMEHOW; // strip your params as needed
let f1 = { getVarName:var_param.toString()} // object = to f2
let f2 = 'getVarName'; // string = to f1 key
var storedData = sessionStorage.$(f1[f2]); // result of f1[f2] should be your incoming var string, de-referenced from any content.