在 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*
如果我更改了对象中的值,它不应该将 true 和 10 作为输出。如果不是,我该如何更改构造函数属性的默认值?
您只是忽略了构造函数参数并始终分配相同的初始值。
我猜你真的想使用 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;
}
我在下面有一个 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*
如果我更改了对象中的值,它不应该将 true 和 10 作为输出。如果不是,我该如何更改构造函数属性的默认值?
您只是忽略了构造函数参数并始终分配相同的初始值。
我猜你真的想使用 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;
}