Tengo clase de estudiante. El alumno tiene nota. La clase del profesor puede cambiar la calificación del estudiante. Otras clases (es decir, la clase principal) no pueden hacer eso. Creo que entendí la parte sobre cómo cambiar la propiedad de otra clase (corríjame si me equivoco), pero ¿cómo asegurarme de que solo la clase Profesor pueda cambiar la calificación?
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 no es compatible con esta funcionalidad. Sin embargo, aún puede agregar una lógica adecuada para facilitarlo al verificar la clase que está tratando de cambiar la changeGrade dentro del método de la siguiente manera:
changeGrade(grade, classChangingGrade) { if (classChangingGrade instanceof Teacher) { this.grade = grade return `the new grade is ${this.grade}` } }Entonces este método debe invocarse de la siguiente manera:
return student.changeGrade(grade, this);Descargo de responsabilidad
Otras clases pueden evitar esto creando una nueva instancia de Profesor e invocando changeGrade de la siguiente manera:
student.changeGrade(grade, new Teacher());