Javascript:允许某些 class 更改另一个 class 的属性
Javascript: allow certain classes to change properties of another class
我有学生class。学生有成绩。
老师 class 可以更改学生的成绩。
其他 classes(即父 class)不能这样做。我想我明白了如何改变另一个 class 的 属性 的部分(如果我错了请纠正我),但是如何确保只有老师 class 可以改变年级?
class Student {
grade = 'A';
changeGrade(grade) {
this.grade = grade
return `the new grade is ${this.grade}`
}
}
class Teacher {
changeStudentGrade(student, grade) {
return student.changeGrade(grade)
}
}
JavaScript 不支持此功能。但是,您仍然可以通过在方法中检查试图 changeGrade
的 class 来添加合适的逻辑来促进它,如下所示:
changeGrade(grade, classChangingGrade) {
if (classChangingGrade instanceof Teacher) {
this.grade = grade
return `the new grade is ${this.grade}`
}
}
那么这个方法应该被调用如下:
return student.changeGrade(grade, this);
免责声明
其他 classes 可以通过创建一个新的 Teacher 实例并调用 changeGrade
来解决这个问题,如下所示:
student.changeGrade(grade, new Teacher());
我有学生class。学生有成绩。 老师 class 可以更改学生的成绩。 其他 classes(即父 class)不能这样做。我想我明白了如何改变另一个 class 的 属性 的部分(如果我错了请纠正我),但是如何确保只有老师 class 可以改变年级?
class Student {
grade = 'A';
changeGrade(grade) {
this.grade = grade
return `the new grade is ${this.grade}`
}
}
class Teacher {
changeStudentGrade(student, grade) {
return student.changeGrade(grade)
}
}
JavaScript 不支持此功能。但是,您仍然可以通过在方法中检查试图 changeGrade
的 class 来添加合适的逻辑来促进它,如下所示:
changeGrade(grade, classChangingGrade) {
if (classChangingGrade instanceof Teacher) {
this.grade = grade
return `the new grade is ${this.grade}`
}
}
那么这个方法应该被调用如下:
return student.changeGrade(grade, this);
免责声明
其他 classes 可以通过创建一个新的 Teacher 实例并调用 changeGrade
来解决这个问题,如下所示:
student.changeGrade(grade, new Teacher());