Используй просто свойство в функции. Прототипы идиоматически нужны только для наследования и описания классов.
Не правильно. Это как набивание меча на ноге: интересное упражнение но во время матча никто таким не занимается.
Вот это хороший вопрос. Это должно быть нечто что
- Функция (потому что это нужно мочь продолжить вызывать)
- Эта функция должна знать про предыдущие вызовы (можно в
magic
конструкировать функцию (f1
), возвращать ее (f1
), а при последующих ее (f1
) вызовах возвращать ее (f1
) саму. magic() == 0; // true
фишка сравнения (обрати внимание что оно нестрогое) в том что если с разных сторон неравенства стоят несовместимые типы, то интерпретатор пытается привести типы. Один из подкапотных шагов который он делает - вызов методаvalueOf
у несоответствующего типа. Мы уже определили что результатmagic
- должна быть функция. Если ей сделать методvalueOf
который возвращает число, то он будет вызываться при нестрогом сравнении и поведение сравнении будет таким как ожидается.