Сеттер не возвращает ожидаемый результат - PullRequest
0 голосов
/ 12 февраля 2019

Я пытался решить эту проблему, по сути, с той же проблемой на codecademy, но безрезультатно.Я пытаюсь заставить свой установщик javascript проверить, является ли аргумент, который я передаю, числом, и если условия удовлетворяются, установите его в свойстве класса, иначе верните строку ошибки.

Я не могу понять, почему это не работает, и я уже потратил на это несколько долгих часов, любая помощь будет принята с благодарностью!

Код:

class Person {
  constructor(name, age) {
    this._name = name;
    this._age = age;
  }

  get name() {
    return this._name;
  }

  get age() {
    return this._age;
  }

  set age(num) {
    if (num.isNaN()) {
      console.log('error!')
    } else {
      this._age = num
    }
  }
}

let human = new Person('Armand', 'string');

console.log(human);

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы хотите запустить функцию setter внутри конструктора, вы не должны использовать свойство поля поддержки (this._age) внутри конструктора.Снимите подчеркивание.( Source )

Кроме того, строка не имеет метода isNan(), вместо этого она принимает переменную в качестве аргумента, как в коде ниже.( Источник )

Если вам нужно руководство для начинающих по синтаксису класса Javascript ES6, вы должны проверить this out.Спасибо:)

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  get name() {
    return this._name;
  }

  get age() {
    return this._age;
  }

  set age(numeric) {
    if (isNaN(numeric)) {
      console.log('error!')
    } else {
      this._age = numeric
    }
  }

  set name(newName) {
    this._name = newName;
  }
}

let human = new Person('Armand', 'string');
console.log(human);
...