@illaaa

Зачем нужны set, get?

Я изучаю js, не понимаю, зачем нужны get, set

Вот пример:
const human = {
  name: 'Andrew',

  getName1() {
    return this.name
  },
  get getName2() {
    return this.name
  }
}

console.log(human.getName2)
console.log(human.getName1())

const humanName2 = human.getName2
console.log(humanName2)
const humanName1 = human.getName1()
console.log(humanName1)


Во всех случаях возвращается одинаковый результат. Касательно set примерно тот же вопрос.
Сомневаюсь, что суть именно в том, чтобы не писать скобочки.
  • Вопрос задан
  • 109 просмотров
Решения вопроса 4
l3ftoverz
@l3ftoverz Куратор тега JavaScript
Люблю Финский металкор и ищу работу.
Это удобно для создания например вычисляемых свойств.

Хороший пример есть на https://learn.javascript.ru/descriptors-getters-setters
var user = {
  firstName: "Вася",
  surname: "Петров",

  get fullName() {
    return this.firstName + ' ' + this.surname;
  },

  set fullName(value) {
    var split = value.split(' ');
    this.firstName = split[0];
    this.surname = split[1];
  }
};

alert( user.fullName ); // Вася Петров (из геттера)

user.fullName = "Петя Иванов";
alert( user.firstName ); // Петя  (поставил сеттер)
alert( user.surname ); // Иванов (поставил сеттер)
Ответ написан
profesor08
@profesor08 Куратор тега JavaScript
const human = {
  name: 'Andrew',

  getName1() {
    return this.name
  },
  get getName2() {
    // в момент получения можно что-то сделать
    console.log(123);
    return this.name
  }
}


Аналогично и с set, можно обработать, или что-то сделать.
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно делать «несуществующие» вычисляемые свойства:
const human = {
  first_name: 'Andrew',
  last_name:  'Poopkin',

  get fullname() {
    return `${this.first_name} ${this.last_name}`;
  }
}

human.fullname   // "Andrew Poopkin"
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Бородатый программер
Ну вот из самого простого, что нельзя сделать с функцией, но можно с get/set:
obj.field++;
obj.field += 5;
const variable = obj.field = 10;


Или еще пример, вот было у нас
const human = {
  name: 'Andrew'
};
Мы уже в коде много где использовали это поле как поле, и вдруг понадобилось делать что-то, когда это поле меняется, что проще, сделать сеттер или поменять весь остальной код?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы