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());