如何使 jQuery 构造函数属性全局可见
How to make jQuery constructor properties globally visible
我正在尝试使用标准 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
});
我希望得到位置输出,但我从 console.log(this.lat)
得到 undefined
,我确实在 vanilla 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
如果我将 getVariables
更改为:
,我可以让 this.lat
工作
$.getVariables = function(lat,lon){
document.lat = lat;
document.lon = lon;
}
看来这两个 this
对象可能在两个方法中引用不同的东西。
我正在尝试使用标准 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
});
我希望得到位置输出,但我从 console.log(this.lat)
得到 undefined
,我确实在 vanilla 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
如果我将 getVariables
更改为:
this.lat
工作
$.getVariables = function(lat,lon){
document.lat = lat;
document.lon = lon;
}
看来这两个 this
对象可能在两个方法中引用不同的东西。