在 JS 中更改对象属性
Changing object attributes in JS
我是 javascript 的新手,如果这是一个愚蠢的问题,请提前道歉。
我正在尝试制作一个 class 待办事项,它应该代表待办事项列表中的项目。项目(或对象)应该有一个名称和一个状态。状态称为完成,表示列表中的项目是否完成。在构造对象时,我将 done=false 设置为默认值。但是,我希望我的 class 具有该功能,以便我可以将其更改为 done=true。我的尝试如下所示。我不明白为什么调用状态 setter 将 done 更改为 done=true.
时输出为 false
感谢所有提示和解释。正如您可能从代码中看到的那样,我对此很陌生。谢谢
class toDo {
constructor(name,done=false) {
this.name = name;
this.done = done;
}
get name() {
return this._name;
}
get status() {
return this._done;
}
set name(value) {
this._name = value;
}
set status(state=true) {
this._done = state;
}
/*set itemDone(state=true) {
this._done = state;
}*/
}
var item1 = new toDo("Eat lunch");
console.log(item1.name);
item1.status;
console.log(item1.done);
我得到的输出是:
Eat lunch
false
如评论中所述,您调用 setter 的语法不正确。在 _done 和 done 的代码中也有错别字。要么完全删除下划线,要么在任何地方使用它。这是我将如何更改代码。
class toDo {
constructor(name,done=false) {
this._name = name;
this._done = done;
}
get name() {
return this._name;
}
get status() {
return this._done;
}
set name(value) {
this._name = value;
}
set status(state=true) {
this._done = state;
}
/*set itemDone(state=true) {
this._done = state;
}*/
}
var item1 = new toDo("Eat lunch");
console.log(item1.name);
item1.status = undefined; //item.status = true will work here. item.status = null will not work here.
console.log(item1._done);
如您所见,您必须使用 item.state = "x" 或类似的东西来调用 setter。你期望它能工作,因为它有一个默认参数,但这不是 case。我用 undefined 调用了 setter ,即使这样它也能工作,表明你的默认参数 true 正在发挥作用。
额外注意:您不能对 null 执行相同的操作,因为 null 表示空值并且与未定义不同。如果您将它传递给任何具有默认参数的函数,该参数将采用值 null。
我是 javascript 的新手,如果这是一个愚蠢的问题,请提前道歉。
我正在尝试制作一个 class 待办事项,它应该代表待办事项列表中的项目。项目(或对象)应该有一个名称和一个状态。状态称为完成,表示列表中的项目是否完成。在构造对象时,我将 done=false 设置为默认值。但是,我希望我的 class 具有该功能,以便我可以将其更改为 done=true。我的尝试如下所示。我不明白为什么调用状态 setter 将 done 更改为 done=true.
时输出为 false感谢所有提示和解释。正如您可能从代码中看到的那样,我对此很陌生。谢谢
class toDo {
constructor(name,done=false) {
this.name = name;
this.done = done;
}
get name() {
return this._name;
}
get status() {
return this._done;
}
set name(value) {
this._name = value;
}
set status(state=true) {
this._done = state;
}
/*set itemDone(state=true) {
this._done = state;
}*/
}
var item1 = new toDo("Eat lunch");
console.log(item1.name);
item1.status;
console.log(item1.done);
我得到的输出是:
Eat lunch
false
如评论中所述,您调用 setter 的语法不正确。在 _done 和 done 的代码中也有错别字。要么完全删除下划线,要么在任何地方使用它。这是我将如何更改代码。
class toDo {
constructor(name,done=false) {
this._name = name;
this._done = done;
}
get name() {
return this._name;
}
get status() {
return this._done;
}
set name(value) {
this._name = value;
}
set status(state=true) {
this._done = state;
}
/*set itemDone(state=true) {
this._done = state;
}*/
}
var item1 = new toDo("Eat lunch");
console.log(item1.name);
item1.status = undefined; //item.status = true will work here. item.status = null will not work here.
console.log(item1._done);
如您所见,您必须使用 item.state = "x" 或类似的东西来调用 setter。你期望它能工作,因为它有一个默认参数,但这不是 case。我用 undefined 调用了 setter ,即使这样它也能工作,表明你的默认参数 true 正在发挥作用。
额外注意:您不能对 null 执行相同的操作,因为 null 表示空值并且与未定义不同。如果您将它传递给任何具有默认参数的函数,该参数将采用值 null。