簡體   English   中英

如何使一個函數在每次調用時生成唯一命名的全局變量? javascript(無jquery)

[英]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.

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