#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); // ошибки не будет и код отработает корректно
Комментариев нет:
Отправить комментарий