javascript - загадка сеттеров и геттеров ... Почему это работает? - PullRequest
0 голосов
/ 01 мая 2020

Посмотрите на простой код ниже, я могу установить "t.map.text.color" на "желтый" без ".map".

Как это возможно?!?

class Text {
    constructor() {
        this.map = {};
        this.map.text = { color: 'red' }
    }
    get text() { return this.map.text; }
}

const t = new Text();

t.text.color = 'yellow';     // WHY DOES IT FUNCTION??
console.log(t.map.text.color); // yellow

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Из-за вашей функции получения, которая указывает на this.map.text.

Вы по существу делаете t.text(), который возвращает указатель на t.map.text

Делая t.text().color (с помощью getter вы можете просто сделать t.text.color), вы указываете на t.map.text.color и присваиваете ему значение "yellow"

0 голосов
/ 01 мая 2020

Вы получаете ссылку на объект { color: 'red' }. Получатель по сути такой же, как и запись

getText() {
  return this.map.text;
}
...