如果语句未在 setter 中运行

时间:2021-07-16 04:40:45

标签: javascript

我对编程还很陌生(大约一周,哈哈),但这里是我写的脚本的简化版,我似乎无法正确输出。对于学生人数,我在相应的 setter 中放置了一个 if 语句。无论我做什么,if 语句似乎都被绕过了。不知道发生了什么,但我已经盯着这个看了 2 个小时,然后重写了 3 次。有人可以解释一下我做错了什么>

class School {
    constructor(numberOfStudents){

      this._numberOfStudents = numberOfStudents;
    }

    get numberOfStudents(){ return this._numberOfStudents}
    set numberOfStudents(value){ 
      if(typeof value !== 'string'){
        this._numberOfStudents = value
      } else {
        console.log('Invalid input: numberOfStudents must be set to a Number.')
      }
    } 
  };

  const highSchool = new School('many');
  console.log(highSchool.numberOfStudents);

还要注意;我相信输出应该是这个,因为输入的变量是一个“字符串”

console.log('Invalid input: numberOfStudents must be set to a Number.')

1 个答案:

答案 0 :(得分:-1)

class School {
  constructor(numberOfStudents) {
    this._numberOfStudents = numberOfStudents;
  }

  get numberOfStudents() {
    return this._numberOfStudents;
  }
  set numberOfStudents(value) {
    if (typeof value !== "string") {
      this._numberOfStudents = value;
    } else {
      console.log("Invalid input: numberOfStudents must be set to a Number.");
    }
  }
}

const highSchool = new School("many");

// The setter is triggered when the value is changed
highSchool.numberOfStudents = 'new value' // Invalid input: numberOfStudents must be set to a Number.

console.log(highSchool.numberOfStudents);