Использует 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
Я остался бы в стороне от расширения/модификации поведения собственных объектов.
Это, по крайней мере, имеет смысл при разработке в командной среде.
Просто потому, что через несколько месяцев другой разработчик, пишущий еще один независимый фрагмент кода, не сразу узнает измененное поведение, если оно не зарегистрировано где-то и не узнало об этом до начала своей задачи.
Вместо этого я предлагаю инкапсулировать/ "пространство имен", используя все такие функции, чтобы кто-то мог использовать или не использовать измененные функции.
Кроме того, собственные объекты и их методы тщательно тестируются для широкомасштабных случаев. Таким образом, вы должны быть полностью уверены в том, что делаете, прежде чем изменять собственные функции.