Сеттеры и геттеры JavaScript:
Обычно методы установки и получения следуют следующему синтаксису в объектах JavaScript. Объект создается с несколькими свойствами. Метод установки имеет один аргумент, а метод получения не имеет аргументов. Оба являются функциями.
Для заданного свойства, которое уже создано в объекте, метод set обычно представляет собой оператор if/else, который проверяет входные данные для любого случая прямого доступа к этому свойству и присвоения его позже с помощью кода, также известного как «set». Это часто делается с помощью оператора if (typeof [arg] === 'определенный тип значения, например: число, строка или логическое значение'), тогда блок кода обычно присваивает this.(specific)property-name к аргументу. (Иногда с записью сообщения на консоль.) Но возвращать ничего не нужно; это просто установка this.specific-property для оценки аргумента. Оператор 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 благодаря методу получения. Кроме того, аналогично тому, как ввод для возраста был ограничен числами, ввод для свойства имени теперь ограничен/задается только строками.
Надеюсь, это поможет прояснить ситуацию! Кроме того, некоторые ссылки для большего:
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< /а>
person
Sean Tank Garvey
schedule
26.10.2017