Функция должна вычислять факториал числа но в ответ выдаёт undefined

Код:
Number.prototype.factorial=function () {
if(isNan(this)==false && isInfinity(this)==false && this>=0 && this-Math.round(this)==0) {
var factor=1;
for (var i=1; i<=this; i++) {
factor*=i;
}
return factor;
}
else {
return Nan;
}
}
var a=5;
trace (Number.prototype.factorial(a)); //Может сдесь ошибка????
Буду благодарен! Заранее спасибо!
