我有一些要在下面的函数中修改的类变量,但该值似乎没有变化。

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/

10-10 07:16