Методы получения и установки происходят из идеи инкапсуляции, которая является гораздо более сильной концепцией в таких языках, как Java. В Java следующий код крайне не рекомендуется:
myObj.somePublicVar = newVal;
В то время как в Javascript это обычная практика. В Java соглашение состоит в том, чтобы создать метод получения и установки для каждой переменной, которую вы собираетесь сделать publi c, и держать переменную, объявленную как private
. Таким образом, вы должны иметь:
private int myVar;
public int getMyVar() {
return myVar;
}
public void setMyVar(int val) {
this.myVar = val;
}
Теоретически это полезно для предотвращения непреднамеренного или нежелательного изменения внутренних состояний объекта. Например, вы можете с помощью sh выставлять только получатель указанных состояний, не позволяя устанавливать их. Таким образом, другие программисты, использующие ваш код в качестве библиотеки, с меньшей вероятностью нарушат ваш код, неосознанно испортив некоторые важные состояния. Также, например, вы можете wi sh проверить новое значение перед его фактической установкой, так что вы получите что-то вроде:
public void setScore(int val) {
if (val < 0) this.score = 0;
else if (val > 100) this.score = 100;
else this.score = val;
}
На практике это строгое соблюдение соглашения часто вызывает больше головной боли, чем льготы. Вы часто видите Java классы с более чем 50% строк, выделенных для различных методов получения и установки, что замедляет разработку.
Javascript добавлена поддержка методов получения и установки, так что если разработчики хотят более строгого контроля, они могут сделать это . Однако, если вы не разрабатываете библиотеку или не участвуете в большом совместном проекте, я сомневаюсь, что преимущества будут иметь какую-либо практическую ценность. Так что TLDR; если вы простой разработчик или работаете только над небольшими проектами, не беспокойтесь - это вызовет больше проблем, чем принесет пользу.