有什么方法可以将underscore.js与全局变量一起使用?

时间:2015-02-03 22:01:48

标签: javascript underscore.js

我有一个读取列表项数组的程序。它通过使用全局变量listItemTypeMap来映射相应的类型,从而转换数组并为每个项目分配一个显式的listItem类型。我决定清楚这应该使用_.map而不是我自己的循环逻辑。

然而,当代码使用map并尝试访问listItemTypeMap时,该变量现在未定义。当我使用自己的for循环时,它完全没问题。这使我相信使用underscore.js时存在某种范围问题。我对框架很新,但无论如何要在_.map对象中规避或插入全局变量?或者我是否必须重写整个班级的工作方式?

//One part of the class
     var myNewArray= _.map(infoList, this.ReconcileListTypes);

//Another part of the class 
    MyProject.MyListManager.ReconcileListTypes = function (listItem)
        {

            var listItemCopy = null;

            if (listItem.Value == undefined)
            {                    //listItemTypeMap is undefined
            listItemCopy = _.extend({ "$type": this.listItemTypeMap[listItem.listItemType] }, listItem);

            if (listItemCopy.listItemType == listItemType.Exception)
            {
                if (listItemCopy.Base != null)
                {
                    listItemCopy.Base = _.extend({ "$type": this.listItemTypeMap[listItemCopy.Base.listItemType] }, listItemCopy.Base);
                }
            }
        }
        else
        {
            listItemCopy = _.extend({ "$type": this.listItemTypeMap[listItem.Value.listItemType] }, listItem.Value);

            if (listItemCopy.listItemType == listItemType.Exception)
            {
                if (listItemCopy.Base != null)
                {
                    listItemCopy.Base = _.extend({ "$type": this.listItemTypeMap[listItemCopy.Base.listItemType] }, listItemCopy.Base);
                }
            }
        }

    return listItemCopy;
};

0 个答案:

没有答案