如何将值设置为javascript对象元素中的函数?

时间:2014-08-01 10:38:42

标签: javascript sapui5

我有这段代码:

this.mGroupFunctions={};
        for(var i=0; i<cols.length; i++){
            var col=cols[i];
            this.mGroupFunctions[col]=function(oContext) {
                var name = oContext.getProperty(col);
                return {
                  key: name,
                  text: name
                };
              };
        }

如果我调试它,我获得 enter image description here

在函数中我插入col而不是变量col !!!的值

如何解决我的问题?

1 个答案:

答案 0 :(得分:1)

当函数运行时,变量col不再包含创建函数时的值。您可以使用立即调用的函数表达式(IIFE)来创建一个闭包,该闭包捕获循环中每次迭代的col值:

this.mGroupFunctions = {};
for(var i=0; i<cols.length; i++){      

  this.mGroupFunctions[cols[i]] = (function(col){

    return function(oContext) {
      var name = oContext.getProperty(col);
      return {
        key: name,
        text: name
      };
    };

  })(cols[i]);

}