簡體   English   中英

javascript如何“取消引用”變量的內容以用作變量名?

[英]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)根本沒有任何屬性(指向內部內存的隱藏屬性除外,那是另一回事),而是通過其getset方法使數據可用:

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM