微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在类变量JavaScript上设置getter / setter

如何解决在类变量JavaScript上设置getter / setter

我有一堂课,如下所示:

export default class Car {
    brand = '';

    color = '';

    fuel = '';

    constructor(car) {
        ...
    }
}

如何在类变量上设置setter?

例如

export default class Car {
    brand = '';

    color = '';

    fuel = '';

    set brand(brand) {
        ...
    }

    get brand() {
        return ...;
    }

    get color(color) {
        return ...;
    }

    set color(color) {
        ...
    }
}

我尝试使用上面的方法,但是它不起作用。

class Car {
    brand = '';

    color = '';
  
  constructor(car) {
    this.brand = car.brand;
    this.color = car.color;
  }
  
  set brand(val) {
    // It should alert Audi.
    alert(val);
  }
}

let car = new Car({brand: 'BMW',color: 'white'});
car.brand = 'Audi';

它不会提醒我在brand上设置的值。

解决方法

问题出在命名约定上,设置器和公共属性都相同,因此在设置它时,您实际上并没有使用自定义设置器。如果您要更改名称,则可以正常工作。

class Car {
  _brand = '';
  _color = '';

  constructor(car) {
    this._brand = car.brand;
    this._color = car.color;
  }

  set brand(val) {
    this._brand = val;
    alert(val);
  }
  
  get brand() {
    return this._brand;
  }
}

let car = new Car({
  brand: 'BMW',color: 'white'
});

car.brand = 'Audi';

console.log(car.brand)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。