只是想知道以下情况的最佳做法是什么,我已经完成了搜索,但似乎只得到引用父/子继承的结果,而这不是,我不能想到另一种方式说出来!
我们说我有以下简化示例对象:
现在,如果我想计算特定地点的日出/日落时间,我需要日期,纬度和经度。目前,我的站点对象具有以下(伪代码)功能:
var Site = function() {
var lat;
var lng;
var calculateSunriseSunset = function(date) {
// do calculation with lat, lng and date
return result;
}
}
例如,我可能会像这样调用函数:
site.calculateSunriseSunset(quote.get('date')); // site here is a reference to a specific site object
其中'引用'是父Quote对象的全局引用。对我来说,这是丑陋的,似乎是不好的做法(循环参考?耦合?)。
然而,我能想到的其他两个选项是:
有没有更好的方法可以解决这个问题?
由于
修改
1)澄清我的意思全球参考'我的意思是我使用了以下代码:
var quote = new Quote();
其中quote在全局命名空间中定义,并且可以从任何地方调用。
2)计算出现的太阳'函数是从另一个对象调用的,一个' Map'处理与显示给用户的地图有关的所有事物的对象。它看起来有点像这样(为了清晰起见,大大简化了):
var Map = function() {
var sites; // list of sites loaded from the server
var leafletMap; // reference to the [Leaflet][1] map object used to do the 'heavy lifting'
var root = this;
showSites = function() {
var siteLayer = L.geoJson(sites, {
onEachFeature: function (feature, layer) {
layer.on('click', function (e) {
root.openPopup(e.target.feature);
});
},
}).addTo(leafletMap);
}
this.openPopup = function(site) {
var popup = L.popup().setContent(site.calculateSunriseSunset(quote.get('date'))).openOn(leafletMap);
}
}