[英]How to make one function generate a uniquely named global variable on each call? javascript (no jquery)
在我正在設計的網站的一部分中,用戶可以選擇設計一個具有多個屬性的問題(即問題文本,名稱,答案值等)。
按下按鈕,我想調用一個函數來將這個問題的屬性存儲在數組中。
但是,用戶可以提出多個問題,我需要每個問題的數組都具有唯一的名稱,因為它們必須是全局數組,所有這些數組都可供以后使用。
話雖這么說,但我一直在研究並且想不出一種方法,可以使同一變量根據上下文創建不同名稱的數組。
理想情況下,我想要增加變量名的東西,即myArray1,myArray2,但一直找不到這樣的東西。
您可以為此使用JSON而不是數組
例如聲明一個像
var問題= [];
現在創建一個json並將其添加到問題中
questions.push({
questionText : "asdfasdfasdf",
name : "asdfasdf",
ans : "asdfasdf"
});
現在您可以像問題[0] .name一樣訪問數組
var myFn = (function() {
var counter = 1;
return function() {
var ret = window['myArray' + counter] = [];
counter++;
return ret;
};
})();
調用myFn()將返回一個數組並將其附加到全局名稱空間。
與其他人一樣,我不建議您這樣做,但有可能。
而不是使用Array,而是將Object用作全局變量的命名空間。
var myGlobalArray = {}
可以通過兩種方式調用對象的屬性:
myGlobalArray.prop //like typical object
myGlobalArray["prop"] //like an array
我們可以利用后一種訪問屬性的方式。
現在,您可以在代碼中進行設置
var myGlobalArray["myArray1"] = {
"question" : "abcd efgh",
"name": "sdas asdasda",
"answer" : "value sdsd dvvsd"
}
和
var myGlobalArray["myArray2"] = {
"question" : "abcd efgh",
"name": "sdas asdasda",
"answer" : "value sdsd dvvsd"
}
以后可以通過以下方式訪問:
myGlobalArray["myArray1"], myGlobalArray["myArray2"], ....etc
或銷毀它們:
delete myGlobalArray["myArray2"];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.