Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2009, 18:33
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Расширение прототипов встроенных обьектов: хорошо или плохо?
Неоднократно слышал от уважаемых мною людей, что Prototype.js — некошерно, потому что изменяет прототипы встроенных обьектов.
Недавно почитал про MooTools, и оказалось, что они тоже используют этот подход, более того, предоставляют удобный интерфейс для расширения прототипов.

И у меня закрались сомнения.

Действительно ли плохо менять встроенные прототипы? Чем это плохо, кроме того, что возможно, при подключении еще одного фреймворка, возникнут конфликты?

Какие подводные камни?
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2009, 18:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от hogart
Prototype.js — некошерно
Prototype не кошерно, потому что они JavaScript не знают Смотрите, например, реализацию метода each для массивов.

По теме: юзаю активно.
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2009, 19:03
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Сообщение от Kolyaj Посмотреть сообщение
Prototype не кошерно, потому что они JavaScript не знают Смотрите, например, реализацию метода each для массивов.
Лень, если честно, поверю на слово

Сообщение от Kolyaj Посмотреть сообщение
По теме: юзаю активно.
А какой фреймворк (если есть)? И какие трудности возникали, если возникали?

Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2009, 19:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от hogart
А какой фреймворк (если есть)?
Во фреймворках, как правило, все для жизни имеется, там что-то дополнительно расширять не надо. В pure скриптах расширяю. Там, где требуется максимальная изолированность, разумеется не расширяю.

Сообщение от hogart
И какие трудности возникали, если возникали?
Если я использую сторонний фреймворк, я его всегда могу пропатчить/удалить в случае чего. Если я пишу фреймворк, который будет использоваться сторонними разработчиками, проблемы, разумеется могут быть, но не у меня
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2009, 19:32
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Kolyaj, удалить? а если уже полмегабайта скриптов написано с расчетом на этот фреймворк?
Ответить с цитированием
  #6 (permalink)  
Старый 10.08.2009, 19:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ну удалить можно, разумеется, только на начальном этапе. Вообще, если ты пишешь с использованием фреймворка, то ты должен писать в стиле этого фреймворка, иначе всегда будут находится концептуальные проблемы.
Проблемы с расширением прототипов могут возникнуть только если ты решил переопределить метод, уже определенный фреймворком, а это и есть написание кода вразрез используемому фреймворку.
Ответить с цитированием
  #7 (permalink)  
Старый 10.08.2009, 21:33
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Kolyaj, это-то очевидно.
Ответить с цитированием
  #8 (permalink)  
Старый 10.08.2009, 21:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А какие еще могут возникнуть проблемы?
Ответить с цитированием
  #9 (permalink)  
Старый 10.08.2009, 23:06
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

hogart, пока нельзя задавать внутреннее свойство {DontEnum} добавляемым методам/свойствам, не советуют расширять Object.prototype и Array.prototype. Причина: оператор in найдёт эти свойства в "пустых" объектах. В остальном - это в идеологии языка, поэтому - смело можно расширять всё, что захочется.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #10 (permalink)  
Старый 10.08.2009, 23:08
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Dmitry A. Soshnikov
и Array.prototype
А по массивам не надо бегать for-in, у них есть (везде, кроме ИЕ) метод forEach.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск