Показать сообщение отдельно
  #1 (permalink)  
Старый 25.05.2014, 10:33
Новичок на форуме
Отправить личное сообщение для Kapalak Посмотреть профиль Найти все сообщения от Kapalak
 
Регистрация: 25.05.2014
Сообщений: 3

Непонятное поведение метода при добавлении во встроенный прототип
Здравствуйте. Недавно столкнулся с такой непоняткой. Допустим я хочу дописать свой метод в прототип Number. И тут столкнулся с непонятным для меня поведением.
Допустим есть такой код.
Number.prototype.myFunc = function(x) {
  alert('x = ' + x + '\nthis = ' + this);
}

Если записать вызов myFunc так
5..myFunc(1)

То всё работает так как и задумано - x равен 1, а this равен 5.
Но если вызвать метод так:
(5).myFunc(1)

То происходит абсолютно непонятная мне фигня - x становится равным 5, а this ссылается на window. А 1 вообще непонятно куда девается, в arguments ее вообще нет. Хотелось бы узнать что вообще происходит при втором варианте записи?
Ответить с цитированием