JavaScript Setter And Getter:
Обычно методы setter и getter следуют следующему синтаксису в объектах JavaScript.Объект создается с несколькими свойствами.Метод setter имеет один аргумент, а метод getter не имеет аргументов.Оба являются функциями.
Для заданного свойства, которое уже создано внутри объекта, метод set, как правило, является оператором if / else, который проверяет ввод в течение любого времени, когда к этому свойству обращаются напрямую, и назначается позже через код, иначе "set"».Это часто делается с помощью оператора if (typeof [arg] === 'определенного типа, такого как: число, строка или логическое значение'), тогда блок кода обычно присваивает свойство this. (Specific)к аргументу.(Иногда с записью сообщений на консоль.) Но ничего возвращать не нужно;он просто устанавливает свойство this.specific для оценки аргумента.Оператор else, тем не менее, почти всегда имеет журнал сообщений (об ошибках) для консоли, который предлагает пользователю ввести другое значение для значения ключа свойства, которое удовлетворяет условию if.
Метод получения, в принципе, противоположен.Он устанавливает функцию без каких-либо аргументов для «получения», то есть возврата (другого) значения / свойства, когда вы вызываете конкретное свойство, которое вы только что установили.Он «получает» что-то отличное от того, что вы обычно получаете в ответ на вызов этого свойства объекта.
Значения сеттеров и геттеров можно легко увидеть для ключей-значений свойств, которые нельзя изменять напрямую, если не выполнены определенные условия.Для свойств этого типа используйте подчеркивание для продолжения имени свойства и используйте метод получения, чтобы позволить вам вызывать свойство без подчеркивания.Затем используйте установщик, чтобы определить условия, с помощью которых можно получить доступ к ключу-значению свойства, или «установить».Например, я включу два основных установщика и получателей для свойств этого объекта.Примечание: я использую постоянную переменную, потому что объекты остаются изменяемыми (после создания).
const person = {
_name: 'Sean';
_age: 27;
set age(ageIn) {
if (typeof ageIn === 'number') {
this._age = ageIn;
}
else {
console.log(`${ageIn} is invalid for the age's key-value. Change ${ageIn} to/into a Number.`);
return 'Invalid Input.';
}
},
get age() {
return this._age;
},
set name(nameIn) {
if (typeof nameIn === 'string') {
this._name = nameIn;
} else {
console.log(`Change ${nameIn} to/into a(ny) String for the name's
key-value.`);
return 'Invalid Input.';
}
},
get name() {
return this._name;
}
};
Интересно, когда вы пытаетесь установить / назначить новое значение ключа для свойства _age, потому что оно имеетвыполнить условие if для успешного назначения, то есть не все назначения действительны и т. д.
person.age = 'twenty-eight'; /* output: twenty-eight is invalid for the
age's key-value. Change twenty-eight to/into a Number. */
console.log(person.age); // output: 27 (twenty-eight was never assigned)
person.age = 28; // output: none
console.log(person.age); // output: 28
Обратите внимание, как я смог получить доступ к свойству person._age через свойство person.age благодаряметод получения.Кроме того, аналогично тому, как ввод для возраста был ограничен числами, ввод для свойства name теперь ограничен / задан только для строк.
Надеюсь, это поможет прояснить ситуацию!Кроме того, некоторые ссылки для более:
https://johnresig.com/blog/javascript-getters-and-setters/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
https://www.infragistics.com/community/blogs/infragistics/archive/2017/09/19/easy-javascript-part-8-what-are-getters-and-setters.aspx