将命名空间添加到javascript中

add namespace to your javascript

本文关键字:javascript 添加 命名空间      更新时间:2023-09-26

我几年前就已经在谷歌地图api上工作了,并编写了一个可重用的实用程序。那时,添加googlemapapi引用确实会在页面的全局命名空间中添加所有api类。由于这是工作样品

<script src="http://maps.google.com/maps?SOMEPARAMETERS">
<script>
var map= new GMap2(document.getElementById("map_canvas"));
var point= new LatLng(31,75);
var line= new Polyline(OPTIONS);
</script>

在v3中,所有Google Maps JavaScript API代码都存储在Google.Maps.*命名空间中,而不是全局命名空间中。作为这个过程的一部分,大多数对象也被重命名,并进行了更多的更改。

现在你必须按照以下编写上面的代码

<script src="APIURL">
<script>
var map= new google.map.Map(document.getElementById("map_canvas"));
var point= new google.mapLatLng(31,75);
var line= new google.map.Polyline(OPTIONS);
</script>

问题

我在Google v2 API时代写了一个库,并在许多项目中使用,效果很好。但现在我正在做一个新项目,并使用GoogleV3neneneba API,希望重用旧的v2库。但是添加v3库并没有在全局名称空间中添加API类,我的库也不起作用。有没有什么方法可以像在C#中那样将名称空间添加到JavaScript文件中,它允许我们在不添加名称空间的情况下编写类

您可以只使用引用:

(function() { // A scoping function to avoid creating glboals
    var GMap2 = google.map.Map;
    var LatLng = google.map.LatLng;
    var Polyline = googlemap.Polyline;

    // ...your code using the above here...
})();

不过,这是假设论点没有改变。

或者,您可以使用Facade模式:

function GMap2(/*...relevant args...*/)
    return new google.map.Map(/*...relevant args here, possibly modified...*/);
}

(其他类似。)

(即使将newGMap2一起使用也可以,因为如果返回对象,new表达式的结果将是从构造函数返回的对象。)