我有一些要在下面的函数中修改的类变量,但该值似乎没有变化。
export class Welcome {
myLatitude = 0; //I want to modify this inside activate()
myLongitude = 0;
myMarkers = [
{
latitude: -27.451673,
longitude: 153.043981
}
];
activate() {
var lat = this.myLatitude; // I thought this was getting a reference to myLatitude.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){ //additional function
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var accuracy = position.coords.accuracy;
lat = latitude; // Hoping to modify myLatitude here
...
但是,当我稍后再次检查myLatitude的值时,它的值仍为0:
@computedFrom('myLatitude')
get myLat() {
console.log(this.myLatitude);
return `${this.myLatitude}`;
}
最佳答案
编写var lat = this.myLatitude
时,将创建新的自变量。 lat
不是指向this.myLatitude
值的链接,因为它具有原始值。 JavaScript中只有对象是通过引用传递的。
因此,在您的情况下,您可以在var self = this
方法调用之前和以这种方式getCurrentPosition
更改值之后,保存到上下文self.myLatitude = latitude
的链接。
或者,您可以使用箭头功能:
navigator.geolocation.getCurrentPosition(position => {
...
this.myLatitude = latitude;
...
}
关于javascript - 在函数表达式中修改类变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45351074/