Как сделать свойства конструктора jQuery глобально видимыми - PullRequest
1 голос
/ 11 октября 2019

Я пытаюсь получить переменные координаты позиции, используя стандартное свойство Navigator.geolocation с jquery, поэтому я могу использовать значение позже в моем коде:


$(document).ready(function(){

    $.getlocation = function(){
          navigator.geolocation.getCurrentPosition($.getPosition,$.error);
    }

    $.getVariables = function(lat,lon){
          this.lat = lat; // i want these to be visible
          this.lon = lon;
    }

    $.getPosition= function(position){
          console.log("latitude:" +position.coords.latitude+ " longitude: "+position.coords.longitude);
          //this function will be executed once position is determined.


    $.getVariables(position.coords.latitude,position.coords.longitude);
    }

    $.error = function(){alert("error");}

    $.getlocation(); // outputs correctly

    setTimeout(()=>{console.log(this.lat)},5000); // undefined

});

Я ожидаю получить вывод местоположения, но вместо этого яполучить undefined из console.log(this.lat), я попробовал это в ванильном javascript, и он отлично работает, вот код javascript:

function locateMe() {

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(getPosition, error);
    } else {

        alert("connection problem");
    }
}

let vars = function(lat, lon) {
    this.lat = lat;
    this.lon = lon;
}

let getPosition = function(position) {
    vars(position.coords.latitude, position.coords.loongitude);
}


let error = function(msg) {
    console.log("problem");
}

locateMe();

setTimeout(() => { console.log(this.lat); }, 5000); //correct output

1 Ответ

0 голосов
/ 11 октября 2019

Я мог бы заставить this.lat работать, если бы изменил getVariables на:

$.getVariables = function(lat,lon){
    document.lat = lat;
    document.lon = lon;
}

Похоже, что два объекта this могут ссылаться на разные вещи в двух методах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...