获取javascript对象文本中的设置访问权限
第一次使用对象文字,我似乎不太理解它们。我需要的是具有对象范围的私有变量,因此可以访问对象文本中的所有函数 问题是: 我有一个映射对象的简单对象文本获取javascript对象文本中的设置访问权限,javascript,jquery,Javascript,Jquery,第一次使用对象文字,我似乎不太理解它们。我需要的是具有对象范围的私有变量,因此可以访问对象文本中的所有函数 问题是: 我有一个映射对象的简单对象文本 var mapObj = { init: function (lat, lng, documentID) { var myOptions = { center: new google.maps.LatLng(lat, lng), zoom: 18, m
var mapObj = {
init: function (lat, lng, documentID) {
var myOptions = {
center: new google.maps.LatLng(lat, lng),
zoom: 18,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById(documentID),
myOptions);
return map;
},
setMarker: function (lat, lng, map, contentObj) {
var myLatlng = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: "Hello World!",
content: contentObj
});
}
};
这一切都很好,我可以使用它作为mapObj.init(…)和mapObj.setMarker(…),它们工作得非常好
我希望能够将其中一些变量值存储在init()方法中,比如“map”,然后让其他方法可以访问它。例如,我不需要在setMarker中传递“map”,因为mapObj应该在init方法之后在内部保存map
类似地,我希望能够通过mapObj.getMap()访问在init中创建的映射对象
我不知道它是怎么工作的。将var映射声明为
var mapObj {
var map
}
例如,抛出错误
我是不是太期待这个像C#一样工作了?我应该使用经典的javascript“类”结构吗?任何指示都会有帮助,这样我可以继续前进
谢谢只需将其包装在如下函数中:
var mapObj;
!function() {
var map;
mapObj = {
init: function (lat, lng, documentID) {
var myOptions = {
center: new google.maps.LatLng(lat, lng),
zoom: 18,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById(documentID),
myOptions);
return map;
},
setMarker: function (lat, lng, map, contentObj) {
var myLatlng = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: "Hello World!",
content: contentObj
});
}
};
}();
现在,map
仅在该函数(及其包含的所有函数)中可用<代码>mapObj在外部可用。在中报告闭包
var mapObj = (function() {
var map; //This is private
var publics = {
init: function(lat, lng, documentID) {
var myOptions = {
center: new google.maps.LatLng(lat, lng),
zoom: 18,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById(documentID), myOptions);
return map;
},
setMarker: function(lat, lng, map, contentObj) {
var myLatlng = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: "Hello World!",
content: contentObj
});
}
};
return publics;
})(window);
公共场所内的一切在外面都是可用的,其他一切都是私有的,都是共享的。太美了!非常感谢。仍然习惯于javascript对象/函数/文字/范围的复杂性。但这正是我想要的。