为了账号安全,请及时绑定邮箱和手机立即绑定

在类变量 JavaScript 上设置 getter/setter

在类变量 JavaScript 上设置 getter/setter

料青山看我应如是 2023-01-06 15:50:18

我有一个如下所示的类:


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。


查看完整描述

1 回答

?
慕侠2389804

TA贡献1494条经验 获得超6个赞

问题在于命名约定,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)


查看完整回答
反对 回复 2023-01-06
  • 1 回答
  • 0 关注
  • 13 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信