IVAAAAN,
Чтобы ваш код был максимально понятен и читабелен старайтесь максимально развести реализацию и логику.
Например взять ваш метод game.run. Я бы писал что-то типа того:
game.run = function () {
this.addRandNums();
this.wait(this.waitTime, this.replaceNumber);
};
То есть смысл в том что в методе с алгоритмом нет ни одной строки кода реализации, а в реализации уже должно быть меньше логики. Восновном ваши методы должны быть максимально просты (пусть даже треть из них будет в 1 строчку) зато код будет понятен. И если вам надо будет поменять его спустя пол года, то по методу с логикой вы легко вспомните алгоритм, а реализующие методы будут просты до безобразия и вникать в них не надо будет.
+ учите jsDoc