В JavaScript «геттеры» и «сеттеры» — это методы, которые используются для получения и установки значений свойств объекта соответственно. Эти методы обеспечивают удобный способ доступа и изменения значений свойств объекта без прямого доступа к внутренним данным объекта.
Вот пример простого объекта JavaScript с несколькими свойствами:
const person = { firstName: 'John', lastName: 'Doe', age: 25 };
Чтобы получить доступ к значениям этих свойств, вы обычно используете запись через точку, например:
console.log(person.firstName); // Output: 'John' console.log(person.lastName); // Output: 'Doe' console.log(person.age); // Output: 25
Однако, если вы хотите изменить значения этих свойств, вам потребуется прямой доступ к данным объекта, например:
person.firstName = 'Jane'; person.lastName = 'Smith'; person.age = 30;
Это может быть неудобно, особенно если у вас есть сложные объекты со многими свойствами, и вы хотите предоставить согласованный способ доступа и изменения значений этих свойств. Вот тут-то и появляются «геттеры» и «сеттеры».
«Геттеры» — это методы, которые используются для получения значений свойств объекта. Они определяются с помощью ключевого слова get
, за которым следует имя свойства, к которому вы хотите получить доступ, например:
const person = { firstName: 'John', lastName: 'Doe', age: 25, get fullName() { return `${this.firstName} ${this.lastName}`; } };
В этом примере мы определили геттер fullName
, который возвращает полное имя человека путем объединения свойств firstName
и lastName
. Чтобы использовать этот геттер, вы должны получить к нему доступ, как и к любому другому свойству, используя точечную нотацию:
console.log(person.fullName); // Output: 'John Doe'
«Сеттеры» — это методы, которые используются для установки значений свойств объекта. Они определяются с помощью ключевого слова set
, за которым следует имя свойства, которое вы хотите изменить, например:
const person = { firstName: 'John', lastName: 'Doe', age: 25, set fullName(name) { const parts = name.split(' '); this.firstName = parts[0]; this.lastName = parts[1]; } };
В этом примере мы определили сеттер fullName
, который принимает строку, содержащую полное имя человека, и соответственно устанавливает свойства firstName
и lastName
. Чтобы использовать этот сеттер, вы должны присвоить ему значение, как и любому другому свойству, используя знак равенства:
person.fullName = 'Jane Smith'; console.log(person.firstName); // Output: 'Jane' console.log(person.lastName); // Output: 'Smith'
«Геттеры» и «сеттеры» полезны, когда вы хотите предоставить согласованный и удобный способ доступа и изменения значений свойств объекта.