我有一个如下所示的类: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贡献1719条经验 获得超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)
添加回答
举报
0/150
提交
取消