我试图创建一个简单的谷歌地图插件。我正在按照教程,但我无法弄清楚这段代码。有人可以解释一下这段代码吗?
(function(window, google) {
var Mapster = (function() {
function Mapster(element, opts) {
this.gMap = new google.maps.Map(element,opts);
}
Mapster.prototype = {
zoom: function(level) {
//some code here
}
};
return Mapster;
}());
Mapster.create = function(element, opts) {
return new Mapster(element, opts);
};
window.Mapster = Mapster;
}(window, google));
答案 0 :(得分:2)
// http://benalman.com/news/2010/11/immediately-invoked-function-expression/
(function (window, google) {
// local `Mapster` IIFE
var Mapster = (function () {
// local `Mapster` constructor function
function Mapster(element, opts) {
this.gMap = new google.maps.Map(element, opts);
}
Mapster.prototype = {
zoom: function (level) {
//some code here
}
};
return Mapster;
}());
// convenience function to create new instances of `Mapster`
Mapster.create = function (element, opts) {
return new Mapster(element, opts);
};
// exposing `Mapster` globally
window.Mapster = Mapster;
// passing in `window` & `google` as params to the IIFE
}(window, google));
// usage:
var mapster = Mapster.create(someEl, {});
console.log(mapster.gMap);
希望评论清楚这一点!
答案 1 :(得分:1)
外部功能功能(窗口,谷歌){}(windows,google)用于在该命名空间中创建命名空间(初始化后google和窗口传递到那里):
所以我们有 window.Mapster 对象,它将了解 google 对象。 在定义之后立即运行该未命名函数需要外圆括号。