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;
但是,他们甚至没有在文档中提及它,因此此功能既没有得到广泛支持,也没有很好的编码风格。
我想减少 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;
但是,他们甚至没有在文档中提及它,因此此功能既没有得到广泛支持,也没有很好的编码风格。