在名称空间内定义地图

时间:2019-06-20 06:47:55

标签: javascript

尝试在名称空间内定义全局映射,并在那些名称空间函数内访问全局映射。但继续获取Uncaught SyntaxError:意外标识符。如果有人能指导我在名称空间函数中定义全局映射并进行访问,将不胜感激。

var namespace = {
  var mymap = new map();
  cm: function () {       
    var childContainer = $("<div>");        
    namespace.myMap.set(cc, childContainer);
  },
  hm: function(ccm, data){          
    var cMenuItem = ccm.innerHTML;
    for (var i = 0; i < data.c.length; ++i){
      if ( cMenuItem === data.c[i]['l']){     
        namespace.Menus(data.c[i]);  
        namespace.myMap.get(cc);     
      }
    }   
  }
};

错误在第一行var mymap = new map();中以Uncaught SyntaxError: Unexpected identifier的形式出现

1 个答案:

答案 0 :(得分:0)

您要在对象内部声明var。你不能这样做。您只能在函数中声明变量。

您所做的:

var namespace = {
  var mymap = new map();  // <------ this line
  cm: function () {       
    var childContainer = $("<div>");        
    namespace.myMap.set(cc, childContainer);
  },
  hm: function(ccm, data){          
    var cMenuItem = ccm.innerHTML;
    for (var i = 0; i < data.c.length; ++i){
      if ( cMenuItem === data.c[i]['l']){     
        namespace.Menus(data.c[i]);  
        namespace.myMap.get(cc);     
      }
    }   
  }
};

您应该做什么:

var namespace = {
  mymap: new map();  // <----- this line
  cm: function () {       
    var childContainer = $("<div>");        
    namespace.myMap.set(cc, childContainer);
  },
  hm: function(ccm, data){          
    var cMenuItem = ccm.innerHTML;
    for (var i = 0; i < data.c.length; ++i){
      if ( cMenuItem === data.c[i]['l']){     
        namespace.Menus(data.c[i]);  
        namespace.myMap.get(cc);     
      }
    }   
  }
};

此外,如评论中所述,map()不是Map()