В чем смысл создания в объекте JavaScript функции функции, которая затем создает свойство? - PullRequest
1 голос
/ 02 августа 2020

(извините за мой плохой английский sh)

Я новичок в JS и в настоящее время использую часть объекта / метода!

Я только что написал эти фрагменты кода :

var jason = {
  fname: 'jason',
  lname: 'roy',
  yearBorn: 2001,
  CalcAge: function () {
    this.age = 2020 - this.yearBorn;
  }
};
jason.CalcAge();
console.log(jason.age);

Ожидаемый результат в журнале консоли - 19, и это именно то, что я получаю! Но это не мой вопрос.

Мой вопрос в том, какой смысл проходить такой долгий процесс только для создания свойства age?

Как вы можете, чтобы распечатать "age: 19 "нам сначала нужно написать:

jason.CalcAge();

А затем:

console.log(jason.age);

Не думаете ли вы, ребята, что это бесполезно?

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

Еще раз, извините за мой плохой английский sh и дайте мне знать, если вы меня не поняли!

1 Ответ

1 голос
/ 02 августа 2020

Ciao, объект с таким методом, как ваш:

var jason = {
  fname: 'jason',
  lname: 'roy',
  yearBorn: 2001,
  CalcAge: function () {
    this.age = 2020 - this.yearBorn;
  }
};
jason.CalcAge();
console.log(jason.age);

И объект без такого метода:

var jason = {
  fname: 'jason',
  lname: 'roy',
  yearBorn: 2001,
  age: 19
};
console.log(jason.age);

кажется похожим, но совершенно другим. Зачем? Гибкость . Позвольте мне немного переписать ваш объект:

var jason = {
   fname: 'jason',
   lname: 'roy',
   yearBorn: 2001,
   CalcAge: function (currYear) {
      this.age = currYear - this.yearBorn;
   }
};
jason.CalcAge(2020);
console.log(jason.age);

Как видите, теперь я передаю текущий год в качестве параметра функции CalcAge. В чем разница между двумя решениями? Первый - stati c (age: 19), и в следующем году он больше не действует. Второй позволяет рассчитать возраст в любом году (а не только в текущем году). Таким образом, ваше решение (с небольшими изменениями) стало более гибким, и его можно было использовать вечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...