javascript 如何 "dereference" 将变量的内容用作变量名?

javascript How do I "dereference" a variable's content for use as a variable name?

我想减少 I/O 使用 XMLHttpRequest()ActiveXObject() 从服务器获取信息的开销,方法是创建一个通用函数来进行获取然后使用 sessionStorage.<variable> 存储获取的数据。麻烦的是,我事先并不知道变量名都是什么,我也故意不想知道。

我在想,如果有某种方法可以“取消引用”一个变量,就像我们在 BASH 中可以轻松做到的那样,例如,这将是微不足道的.例如,如果获取的数据在 newData 中,并且从中获取数据的文件名在 dataFile 中,并且如果取消引用语法是 $(<variableName>),那么可以编写这样的代码来存储和获取数据:

//Store the data:
sessionStorage.$(dataFile) = newData;

//Fetch the data:

var storedData = sessionStorage.$(dataFile);

明白了吗? ... 好吧,现在我该怎么做呢?!

...我能看到的唯一其他解决方法非常笨拙 - 制作数组,一个有名称,另一个有值 - 必须有更简单的方法! TIA.

试试这个。不确定我是否清楚地遵循了你的问题,但如果你在其他代码中使用变量名称作为字符串时遇到问题,我会尝试这个。

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.

与往常一样,最好先访问 docs。在那里您可以看到,sessionStorage(如 localStorage 或 Map)根本没有任何属性(除了隐藏的 属性 指向内部存储器但那是另一回事),而是通过其 get 使数据可用或 set 方法:

 sessionStorage.set("a name", "a value");

然而 session/localStorage 也提供全局 getters/setters,所以理论上可以这样做:

  sessionStorage.name = "value";

如果键名是动态的,可以使用括号表示法:

   sessionStorage[aName] = aValue;

但是,他们甚至没有在文档中提及它,因此此功能既没有得到广泛支持,也没有很好的编码风格。