Использует Prototype для того, чтобы не повредить родные объекты?

Я где-то читал, что использование prototype для расширения собственных объектов (String, Number, Array и т.д.) было плохой идеей. Это правда? Почему или почему нет?

Ответы

Ответ 1

Я не думаю, что это плохо. Если вы посмотрите на Ruby on Rails, очень многие собственные объекты расширены с помощью пользовательских функций, и это очень хорошая структура.

Что было бы плохо, если вы измените существующие методы на собственные объекты. это может привести к непредвиденным последствиям.

Ответ 2

Там большое обсуждение об этом в этом видео от JSConf 2011 от Andrew Dupont. http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542

В основном точки:

  • Не расширяйте Object.prototype
  • Некоторым людям может нравиться расширять вещи, некоторые люди не
  • Вам нужно знать, что вы делаете.
  • Не используйте две библиотеки, которые расширяют вещи, потому что это может быть плохо.
  • Расширение прототипов для добавления стандартных функций почти всегда в порядке.

Ответ 3

Я остался бы в стороне от расширения/модификации поведения собственных объектов.

Это, по крайней мере, имеет смысл при разработке в командной среде.

Просто потому, что через несколько месяцев другой разработчик, пишущий еще один независимый фрагмент кода, не сразу узнает измененное поведение, если оно не зарегистрировано где-то и не узнало об этом до начала своей задачи.

Вместо этого я предлагаю инкапсулировать/ "пространство имен", используя все такие функции, чтобы кто-то мог использовать или не использовать измененные функции.

Кроме того, собственные объекты и их методы тщательно тестируются для широкомасштабных случаев. Таким образом, вы должны быть полностью уверены в том, что делаете, прежде чем изменять собственные функции.