如何使一个函数在每次调用时生成唯一命名的全局变量? javascript(没有jquery)

时间:2014-09-05 04:40:12

标签: javascript function variables

在我正在设计的网站的一部分中,用户可以选择设计一个具有多个属性的问题(即问题文本,姓名,答案值等)。

按下按钮,我想调用一个函数将这个问题的属性存储在一个数组中。

但是,用户可以提出多个问题,我需要每个问题的数组都有一个唯一的名称,因为它们必须是全局数组,所有这些都可供以后使用。

话虽如此,我已经研究过,并且无法想出一种方法,可以根据上下文创建不同命名的数组。

理想情况下,我想要一些增加变量名称的东西,即myArray1,myArray2,但却无法找到这样的东西。

3 个答案:

答案 0 :(得分:0)

您可以使用JSON代替数组

e.g。声明一个像

这样的变量

var questions = [];

现在创建一个json并将其添加到问题

questions.push({
questionText : "asdfasdfasdf",
name : "asdfasdf",
ans : "asdfasdf"
});

现在您可以像问题[0] .name

一样访问数组

答案 1 :(得分:0)

var myFn = (function() {
  var counter = 1;
  return function() {
    var ret = window['myArray' + counter] = [];
    counter++;
    return ret;
  };
})();

call myFn()将返回一个数组并将其附加到全局命名空间。

和其他人一样,我不建议这样做但是有可能。

答案 2 :(得分:0)

而不是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"];