Задать вопрос

Как вы относитесь к расширению прототипов нативных объектов?

Речь идет о чем-то таком:

Array.prototype.first = function() {
    return this[0];
};

Array.prototype.last = function() {
    return this[this.length - 1];
};

...


Можно нагуглить несколько статей на эту тему, там приводятся разные доводы за/против. Но меня интересует ваш личный опыт. Сталкивались ли вы в практике с негативными последствиями такого вмешательства?

p.s. Речь не идет о расширении Object или DOM объектов. Только Array, Function, String etc.
  • Вопрос задан
  • 2824 просмотра
Подписаться 3 Оценить Комментировать
Решение пользователя Александр Хиренко К ответам на вопрос (2)
Satanpit
@Satanpit
Front-end developer
Во первых, а где гарантия что вот таким способом Вы не затрете нативную реализацию, а даже если и будете проверять, то опять же, нету никакой гарантии что работать они будут одинаково?
Во вторых, Вы молодец, расширили прототип и спокойно пользуетесь, пришел новый разработчик на ваше место, смотрит, а там arr.last() и давай он разбираться где же оно взялось и как работает.

В реальной жизни с таким не сталкивался, может просто повезло, а может из-за того что в любой книге по JavaScript написано "Не расширяйте нативные объекты!"

На мой взгляд, расширять нативные объекты можно только в случае полифилов.
Ответ написан