Почему функция прототипа в 40 раз медленнее, чем функция, объявленная по умолчанию?

Я поигрался с jsperf.com и обнаружил, что прототипом функции является В 40 раз медленнее, чем заявленная функция "по умолчанию".

String.prototype.contains = function(s){ return !!~this.indexOf(s) }= 220 000 операций/с

vs.

function isContains(str, s) { return !!~str.indexOf(s) }= 8,5 тыс. операций/с

Вот тестовый пример jsperf

PS Я знаю, что модификация прототипа - не лучший вариант, и ее можно назвать "обезьяньим патчем" :)

6
задан Dukeling 8 June 2013 в 20:23
поделиться