Как правильно вызывать функции прототипа в javascript?
У меня есть следующий код с объектом под названием Map, определенным в пространстве имен RHCA. Прототипу карты присваивается объект, содержащий следующие методы.
RHCA.Map = function(centerCoords){ this.geojson = null; this.map = null; this.initZoom = 0; this.mapColors = []; this.mapCenter = centerCoords.slice(0); this.geoJsonProperty = null; this.dataFieldsMap; }; RHCA.Map.prototype = { setColorRange :function(population){ console.log(this); var color; // set color according to population value ... return color }, setStyle : function(feature){ console.log(this); var population = feature.properties.pop10; var countyColor = this.setColorRange(population); return { fillColor: countyColor, weight: 0.5, opacity: 1, color: '#4e4e4e', fillOpacity: 0.9, fillRule: 'evenodd', className:'svg-custom' }; }, render : function (){ console.log(this); var self = this; var southWest = L.latLng(20.0, -114.0); var northEast = L.latLng(40.0,-88.0); var boundRect = L.latLngBounds(southWest, northEast); self.initZoom = self.setZoomLevel(); // map object with options self.map = L.map('map',{ center: self.mapCenter, zoom: self.initZoom, maxZoom: self.initZoom+2, minZoom: self.initZoom-0.25, // maxBounds: boundRect, zoomControl:true, reUseTiles:true, unloadInvisibleTiles:true }); // create geojson layer and add it to map self.geojson = L.geoJson(countyBoundaries,{ style: self.setStyle, onEachFeature: self.onEachFeature }); self.geojson.addTo(self.map); } };
Затем я создаю объект карты Вот так.
var map = new RHCA.Map([-31,99]);
Затем я вызываю функцию render () для объекта map, которая затем вызывает setStyle (). setStyle () затем вызывает setColor ().
Я получил следующую ошибку из браузера, когда вызвал setColorRange () в функции setStyle ().
Uncaught TypeError: this.setColorRange is not a function.
Когда я печатаю "это" с помощью console. log () в render (), он указывает на объект RHCA. Map,
но когда я печатаю "это" в функции setStyle (), она указывает на объект Window. Вместо этого мне нужно "это", чтобы указать на объект RHCA.Map.
Любая помощь будет оценена по достоинству. Спасибо вам.
Что я уже пробовал:
Я пытался изменить эту ситуацию.setColorRange в метода setstyle() функция RHCA.Карте.setColorRange но она производит такую же ошибку как и раньше.