Разбираюсь потихоньку в javascript. Есть класс Weather в нем несколько свойств объявлено, вроде этого. И в нем функция(метод) для изменения этого самого свойства.
class Weather {
constructor() {
this.location;
// ну и т.д.
}
changeLocation(location) {
this.location = location;
}
}
В примере это выглядит как
const weather = new Weather();
const location = 'London, UK';
weather.changeLocation(location);
Мне не совсем понятно зачем здесь функция(метод)? Ведь можно просто
const weather = new Weather();
const location = 'London, UK';
weather.location = location;
Не проще ли так ? И не надо дергать функцию(метод). Как правильно? Как это принято делать?
Хорошей практикой является изменение свойств объекта через функцию. Это нужно для того, что ты или другой разработчик (если проект командный) не смог просто взять и поменять это свойство на что угодно. В случае с функцией ты сможешь добавлять всякие проверки на корректность нового значения.
class Weather {
constructor() {
this.location;
}
changeLocation(location) {
if (typeof location !== 'string') {
throw new Error('Invalid location value');
}
this.location = location;
}
}
const invalidLocation = [1,2,3, {test: 3}]; // невалидный тип
const validLocation = 'London, UK'; //валидный тип
const weather1 = new Weather();
weather1.location = invalidLocation; // таким кодом ты сможешь сломать свое приложение, но с сточки зрения кода все ок)
const weather2 = new Weather();
weather2.changeLocation(invalidLocation); // получишь ошибку и это свойство не будет присваиваться
const weather3 = new Weather();
weather3.changeLocation(validLocation); // ошибки не будет и код отработает корректно
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости