在 Javascript 中的构造函数 class 中更改属性的默认值

Change default value of an attribute in constructor class in Javascript

我在下面有一个 class 操作。 _actionOver_peopleAffected 的默认值已定义。

class Action {
    constructor(staffName, description, actionOver, peopleAffected){
        this._staffName=staffName;
        this._description=description;
        this._actionOver=false;
        this._peopleAffected=0;
    }

现在我定义这个 class 的新对象并更改 actionOver_peopleAffected

的值
let a= new Action ('Raul', 'Goal 1: Qaulity Education', true,10);

当我在控制台打印这个时

console.log(a._actionOver);   *// gives false
console.log(a._peopleAffected);  *// gives 0*

如果我更改了对象中的值,它不应该将 true10 作为输出。如果不是,我该如何更改构造函数属性的默认值?

您只是忽略了构造函数参数并始终分配相同的初始值。
我猜你真的想使用 default parameter values?

class Action {
    constructor(staffName, description, actionOver = false, peopleAffected = 0){
//                                                ^^^^^^^^                ^^^^
        this._staffName = staffName;
        this._description = description;
        this._actionOver = actionOver;
//                         ^^^^^^^^^^
        this._peopleAffected = peopleAffected;
//                             ^^^^^^^^^^^^^^
    }

您没有分配默认值,您只是分配了一个值并忽略了作为参数传递的值。

定义默认值后:

    this._actionOver=false;

您必须检查是否通过参数传递了其他值并覆盖默认值:

    this._actionOver=false;
    if (actionOver) this._actionOver = actionOver;

你可以做一个衬垫:

   this._actionOver = actionOver || false;

或者只使用函数参数默认值:

    constructor(staffName, description, actionOver = false, peopleAffected = 0){
        // ....
        this._actionOver=actionOver;
    }