Вывод значения при создании класса в JS [дубликат]

98
18 июня 2021, 18:30
На этот вопрос уже дан ответ здесь:
Как сделать так, чтобы экземпляр конструктора возвращал примитивный тип? (1 ответ)
Закрыт 1 год назад.

столкнулся с задачей и никак не могу сообразить как правильно реализовать класс.

есть класс

class MyClass {
   constructor() {
      let a = 0;
      this['methodName'] = () => a +++ a;
   }
}

как правильно его реализовать, чтоб при создании класса я получал переменную а, то есть

let classInstanse = new MyClass();
classInstanse == 1 // true
classInstanse == 3 // true
classInstanse == 5 // true

Изменять класс я не могу ( такое условие), могу только задать имя метода в this['methodName']

Answer 1

суть где-то тут : Equality comparisons and sameness, Object to primitive conversion

class MyClass { 
  constructor() { 
    let a = 0; 
    // или toString 
    this['valueOf'] = () => a++ + a; 
  } 
} 
 
let classInstanse = new MyClass(); 
console.log(classInstanse == 1) // true 
console.log(classInstanse == 3) // true 
console.log(classInstanse == 5) // true

READ ALSO
Добавление метода к переменной с помощью записи «через точку» создает в обьекте новое свойство?

Добавление метода к переменной с помощью записи «через точку» создает в обьекте новое свойство?

Насколько я понял запись через точку означает, что к объекту добавляем какое-то свойство с определенным значением:

86
Функция рандомного числа с исключением предыдущих результатов

Функция рандомного числа с исключением предыдущих результатов

Как написать функцию выбора рандомного числа, в которой исключались бы результаты предыдущих срабатываний? Создать отдельный массив с результатами...

92
Добавить в скрипт JavaScript пустой поиск

Добавить в скрипт JavaScript пустой поиск

Нашел в интернете скрипт на JavascriptЧто-то типо поисковика

97