我正在从Eloquent's JavaScript: Exercise Section -> Groups开始练习。我设法编写了代码,但是我不明白为什么在使用this
时我的代码无法正常工作。
我当前的代码:
class Group {
constructor() {
this.members = [];
}
has(value) {
return this.members.includes(value);
}
add(value) {
if (!this.has(value)) this.members.push(value);
}
delete(value) {
if (this.has(value)) return this.members =
this.members.filter(element => element != value);
}
static from(array) {
let newGroup = new Group();
for (let element of array) {
newGroup.add(element);
}
return newGroup;
}
}
我尝试将static from(array) {...}
更改为:
static from(array) {
let newGroup = new Group();
for (let element of array) {
this.members.push(element);
}
return newGroup;
}
考虑到newGroup.add(element)
和this.members.push(element)
相对相同,为什么后者在第二种静态方法中不起作用?
答案 0 :(得分:3)
考虑到newGroup.add(element)和this.members.push(element)
不。静态方法中的this
指向类本身(Group
),而不指向不存在的实例。这意味着您可以将其用作:
let newGroup = new this();
newGroup.members.push(element);