Изменение встроенных прототипов в JavaScript считается плохой практикой по нескольким причинам:
- Возможность конфликтов. 14 Прототипы глобальны, и новые свойства, добавленные в них из разных мест, могут конфликтовать между собой. 12 Например, если две библиотеки добавляют одно и то же свойство в прототип, но определяют его по-разному, конфликт неизбежен. 2
- Влияние на все скрипты. 2 Изменения встроенных прототипов влияют глобально на все скрипты, что не очень хорошо с архитектурной точки зрения. 2
- Неустойчивость кода к будущим версиям. 4 Например, если в следующей версии JavaScript метод будет реализован с другой сигнатурой, придётся переписывать весь написанный код. 4
Однако есть одно исключение, когда изменение встроенных прототипов допустимо и даже приветствуется — создание полифилов. 1 Так называют эмуляцию метода, который существует в спецификации JavaScript, но ещё не поддерживается текущим движком JavaScript. 1 В этом случае можно реализовать его самостоятельно и добавить во встроенный прототип. 1