在javascript闭包函数中保留变量

时间:2011-10-25 07:21:45

标签: javascript closures

我几乎是javascript编程的新手,我真的需要一些帮助/建议。

我想做什么: 我有一个函数(或对象?!),如下所示:

var svgInteraction = function (containerId) {
    var svgNamespace = "http://www.w3.org/2000/svg",
        htmlns = "http://www.w3.org/1999/xhtml",
    mathns = "http://www.w3.org/1998/Math/MathML";

    svgInteractions = {};

    svgInteractions[containerId] = "I am " + containerId;
    console.log(svgInteractions);

    return function () {
        console.log(svgInteractions);
    }
};

我初始化一个这样的变量:

var svg1 = svgInteraction("container_1");
var svg2 = svgInteraction("container_2");

问题是,对于svgInteraction的每次初始化,svgInteractions对象都会重新初始化。

输出:

Object { container_1="I am container_1"}
Object { container_2="I am container_2"}

有没有办法保留旧的价值?

谢谢

1 个答案:

答案 0 :(得分:1)

每次(svgInteractions = {})调用该函数时,不要将其设置为空对象。

试试这个......

var svgInteraction = (function() {

   var svgInteractions = {};

   return function(containerId) {
     // Implementation
   }

})();

此处,svgInteractions已封装,但对svgInteraction的所有调用也将静态