对于我的新项目,我正在学习使用Javascript中的对象。到目前为止,我已经把这一切搞得一团糟,希望有人能指出出了什么问题。
我的主要代码:
var self = null; //to force a local 'self' variable from now on
var Person = function (firstName) {
this.firstName = firstName;
this.user_lat = 0;
this.user_long = 0;
this.user_accur = 0;
this.user_stable = 0;
};
Person.prototype.setCoordinates = function(lat, lng) {
this.user_lat = lat;
this.user_long = lng;
}
Person.prototype.fetchLocation = function() {
var self = this;
navigator.geolocation.getCurrentPosition(self.logPosition, function() { console.log("position fail") }, {enableHighAccuracy: true});
}
Person.prototype.logPosition = function(pos) { //saves coordinates in current person - object
this.setCoordinates(pos.coords.latitude, pos.coords.longitude);
}
index.php执行以下操作:
var person = new Person("Lorre");
person.fetchLocation();
//do_stuff_with_location_in_object
然而,'setcoordinates'函数失败并出错:
Uncaught TypeError: undefined is not a function / main.js:40 / Person.logPosition
我很确定这是愚蠢的我做错了,但我现在整晚都在努力解决“这个问题”而且我已经绝望了...希望你们中的任何一个人都能看出出了什么问题
提前致谢!
答案 0 :(得分:0)
感谢dandavis和minitech在评论中提供帮助。 bind(this)
成功了!
this.logPosition.bind(this)