Kapalak, лол. Точку с запятой ставить надо.
Number.prototype.myFunc = function(x) {
alert('x = ' + x + '\nthis = ' + this);
}*!*;*/!*
(5).myFunc(1);
У тебя же получается:
Number.prototype.myFunc = function(x) {
alert('x = ' + x + '\nthis = ' + this);
}(5).myFunc(1);
Т.е. функция создаётся и сразу вызывается с аргументом
5 в контексте
window, а после, уже к возврату функцции(в данном случае undefined) пытается примениться несуществующий пока myFunc, естественно с ошибкой.