繁体   English   中英

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

[英]How set value into a function in the element of javascript Object?

我有以下代码:

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
                };
              };
        }

如果我调试它,我得到 在此处输入图片说明

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

我该如何解决我的问题?

当函数运行时,变量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]);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM