[英]javascript How do I “dereference” a variable's content for use as a variable name?
我想通過做一個通用的函數來進行獲取,然后使用sessionStorage.<variable>
存儲獲取的數據,來減少使用XMLHttpRequest()
或ActiveXObject()
從服務器獲取信息的I / O開銷sessionStorage.<variable>
。 麻煩的是,我事先不知道變量名是什么,我故意不想知道。
我在想,如果有某種方法可以“ 取消引用 ”變量,例如我們可以輕松地在BASH
中進行操作,那將是微不足道的。 例如,如果獲取的數據在newData中,而從中獲取文件的名稱在dataFile中,並且如果取消引用語法為$(<variableName>)
,則可以編寫這樣的代碼來存儲和獲取數據:
//Store the data:
sessionStorage.$(dataFile) = newData;
//Fetch the data:
var storedData = sessionStorage.$(dataFile);
得到它? ...好吧,現在,我該怎么做呢?
...我能看到的另一種方法是非常笨拙-制作數組,一個帶有名稱,另一個帶有值-必須有一種更簡單的方法! TIA。
與往常一樣,最好先訪問文檔 。 在那里,您可以看到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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.