与谷歌地图变量范围共同描述

Coffeescript with google maps variable scope

本文关键字:描述 范围 谷歌地图 变量      更新时间:2023-09-26

我正试图用coffeescript让谷歌地图玩得很好。我遇到的问题是coffescript将javascript封装在(function() {中,这意味着变量不能进入全局范围。

有没有办法让coffescript强制变量进入全局范围?

下面是我目前拥有的一个简单代码示例。

initialize = ->
  options = 
      lat:-34.456
      lng:23.456
      zoom: 10
  map = new google.maps.Map document.getElementById('map-canvas'), options
  return
google.maps.event.addDomListener(window, 'load', initialize)

通常,您希望避免全局变量。

如果你绝对需要创建一个全局,你可以通过在window:上分配一个属性来完成

window.foo = "bar";

这创建了一个名为foo的全局(可以在没有window.的情况下使用),因为所有全局变量实际上都是全局对象的属性,而在浏览器上,全局对象是Window对象,可以通过window全局访问。

两个选项:

您可以附加到窗口,也可以附加到全局名称空间

 window.initialize = ->

或者在浏览器中,对this的引用将是窗口,因此

@initialize = ->

或者创建自己的命名空间并附加在那里:

myApp ?= {}
myApp.intialize = ->

然后在其他地方(比如这里显示的jQuery就绪处理程序中):

$->
  google.maps.event.addDomListener(window, 'load', myApp.initialize)