1. Я бы вынести все функции в прототип.
2. Пропущенные
var перед объявлением переменной. Очень много где.
3. Метод
show_result в конце кидает ошибку. Зачем?
4. Метод
next. В одном из условий
return NaN. Зачем?
5. Весь текст аля "'
Importance of decision'" я бы вынес в константы куда нить повыше.
6.
this.next = function (num=0) Это не работает. Правильно делать так.
/**
* @param {number} [num=0]
*/
this. next = function (num) {
num = num || 0;
...
}
7. Про атрибуты уже говорили. Я бы тоже использовал свойства, а не атрибуты. Запись короче и понятнее.