范围问题/“未定义不是函数”

时间:2014-12-01 19:40:12

标签: javascript oop geolocation

对于我的新项目,我正在学习使用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

我很确定这是愚蠢的我做错了,但我现在整晚都在努力解决“这个问题”而且我已经绝望了...希望你们中的任何一个人都能看出出了什么问题

提前致谢!

1 个答案:

答案 0 :(得分:0)

感谢dandavis和minitech在评论中提供帮助。 bind(this)成功了!

this.logPosition.bind(this)