@cryptohas

Можно ли переопределить оператор присваивания у объекта?

Если присвоить document.cookie новое значение, то старые данные не сотрутся:

document.cookie = "abc=aaa;";
document.cookie = "num=123;";

console.log(document.cookie); //abc=aaa;num=123;


Переменная не переписывается, а увеличивается в размере, будто бы для неё выделен свой оператор присваивания. Можно ли сделать такой же объект с такими же свойствами?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
sergiks
@sergiks Куратор тега JavaScript
♬♬
Можно с помощью «сеттеров» — функции, которая вызывается, когда объекту назначают это свойство.

Например, в классе определить метод, который будет вызываться при установке значения свойству:
class Habr {
  __values = [];

  static delimiter = ';';

  get qna() {
    return this.__values.join(Habr.delimiter);
  }

  set qna(value) {
    if (!this.__values.includes(value)) {
      this.__values.push(value);
    }
  }
}

const foo = new Habr();
foo.qna = 'x=y';
foo.qna = 'a=b';
console.log(foo.qna); // x=y;a=b


Для ранее существовавшего объекта можно переназначить его свойство, вписав сеттер через Object.defineProperty()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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