如何解决在 JS 中更改对象属性
我是 JavaScript 新手,如果这是一个愚蠢的问题,请提前抱歉。
我正在尝试创建一个类 toDo,它假设代表待办事项列表中的项目。项目(或对象)应该有一个名称和一个状态。状态称为完成,表示列表中的项目是否完成。构造对象时,我将 done=false 设置为默认值。但是,我希望我的班级具有该功能,以便我可以将其更改为 done=true。我的尝试如下所示。如果我调用状态设置器将 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 意味着一个空值,这与 undefined 不同。如果您将它传递给任何具有默认参数的函数,该参数将取值为 null。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。