Witam
Piszę aplikację opartą o Google Maps API 3. Mam taki oto kod:
function MapElement() {
MapElement.prototype.latLng = new google.maps.LatLng(0, 0);
MapElement.prototype.errorMargin = 3.5;
MapElement.prototype.toString = mapElementToString();
}
function mapElementToString() {
return '' + this.latLng.lat() + '' + this.latLng.lng() + ''
+ this.errorMargin + '';
}
Mój problem polega na tym, że przeglądarka nie zna funkcji lat(), której używam w funkcji mapElementToString().
Ten obiekt i funkcja znajduja się w pliku *.js, który dołączam do innego pliku *.html. W pliku *.html ładuję także API Google Maps.
Teraz chciałbym się dowiedzieć, jak zrobić, aby ta funkcja lat() była znana w tym pliku.
Proszę o odpowiedź - za wszystkie z góry dziękuję. 
wszerad
(wszerad)
#2
funkcja będzie znana dopiero kiedy się załaduje, dlatego musisz zadbać aby skrypt ruszył dopiero po załadowaniu tego pliku.
kubar3k
(Kubarek)
#3
W funkcji mapElementToString, obiekt this wskazuje na window, a nie na twój obiekt typu MapElement. Najprościej to będzie użycie takiej konstrukcji:
var _self = this;
MapElement.prototype.toString = function() {
mapElementToString.call(_self);
}
Funkcja call przekazuje właściwy obiekt this do funkcji i od razu wywołuje tę funkcję 
Teraz mam coś takiego:
function MapElement(name, latLng, errorMargin) {
this.name = name || "Noname element";
this.latLng = latLng || new google.maps.LatLng(0, 0);
this.errorMargin = errorMargin || 2;
this._self = this;
MapElement.prototype.toString = function () {
mapElementToString(this._self);
}
}
function mapElementToString(self) {
return '' + self.latLng.lat() + '' + self.latLng.lng() + ''
+ self.errorMargin + '';
}
Co prawda błędu już nie wywala, ale jeśli utworze ten obiekt i wywołam funkcję toString():
var element_mapki = new MapElement("Tower Bridge", towerBridge, 2);
alert(element_mapki.toString());
To w alercie otrzymuję wynik: “undefined”. 
Co zrobiłem nie tak? 
kubar3k
(Kubarek)
#5
A co Ci zwraca funkcja MapElement.prototype.toString
? Jest tam słówko kluczowe return
? 
Tak masz rację, brakowało słówka return. ;D
Dziękuję Wszystkim bardzo za pomoc. 