在类变量 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。


料青山看我应如是
浏览 122回答 1
1回答

慕侠2389804

问题在于命名约定,setter 和 public 属性都是相同的,因此在设置它时实际上并没有使用自定义 setter。如果您要更改名称,它将起作用。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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript