Изменить значение по умолчанию атрибута в классе конструктора в Javascript - PullRequest
0 голосов
/ 29 октября 2019

У меня есть класс действий ниже. Определены значения по умолчанию для _actionOver и _peopleActed .

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

Теперь я определяю новый объект этого класса и изменяю значения для actionOver и _peopleActed

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

Когда я печатаю этов консоли

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

Не должно ли оно выдавать true и 10 в качестве выхода, если я изменил значения в объекте. Если нет, то как мне изменить значение по умолчанию атрибута конструктора?

Ответы [ 2 ]

1 голос
/ 29 октября 2019

Вы просто игнорируете аргументы конструктора и всегда присваиваете одно и то же начальное значение.
Полагаю, вы действительно хотели использовать значения параметров по умолчанию ?

class Action {
    constructor(staffName, description, actionOver = false, peopleAffected = 0){
//                                                ^^^^^^^^                ^^^^
        this._staffName = staffName;
        this._description = description;
        this._actionOver = actionOver;
//                         ^^^^^^^^^^
        this._peopleAffected = peopleAffected;
//                             ^^^^^^^^^^^^^^
    }
0 голосов
/ 29 октября 2019

Вы не присваиваете значение по умолчанию, вы просто присваиваете значение и игнорируете значения, переданные в качестве аргументов.

Как только вы определили значение по умолчанию:

    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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...