Я предполагаю, что время поиска функции складывается.
В первом случае вы уже просмотрели адрес remove
, поэтому вызов функции просто;
Метод Object.create()
должен сначала найти в Array.prototype
, а затем найти его в свойствах нового объекта.
Последний метод замены прототипа требует времени для поиска функции в прототипе.
Я не уверен, как проверить эту гипотезу, но я видел нечто подобное раньше при оптимизации кода Python.