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