#javascript #ооп #ecmascript_6
Разбираюсь потихоньку в 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;
Не проще ли так ? И не надо дергать функцию(метод). Как правильно? Как это принято
делать?
Ответы
Ответ 1
Хорошей практикой является изменение свойств объекта через функцию. Это нужно для того, что ты или другой разработчик (если проект командный) не смог просто взять и поменять это свойство на что угодно. В случае с функцией ты сможешь добавлять всякие проверки на корректность нового значения. 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); // ошибки не будет и код отработает корректно
Комментариев нет:
Отправить комментарий