Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Как Вы относитесь к изменению Object.prototype (https://javascript.ru/forum/offtopic/21107-kak-vy-otnosites-k-izmeneniyu-object-prototype.html)

systemiv 29.08.2011 15:33

Как Вы относитесь к изменению Object.prototype
 
сабж

float 29.08.2011 15:36

отрицательно

B@rmaley.e><e 29.08.2011 15:43

Изменение прототипов встроенных объектов добавлением нестандартных методов (и, тем более, свойств) — великое зло, я считаю. Но добавлять стандартизированные методы (indexOf для массивов, bind для функций и т.д.) в случае их отсутствия я не считаю чем-то плохим.

Изменение Object.prototype, там самым, вообще смертный грех, т.к. затрагивает вообще все объекты.

systemiv 29.08.2011 16:03

Фреймворк prototype.js не брезгует, если верить статьям

ваый 29.08.2011 16:10

Цитата:

Сообщение от systemiv
Фреймворк prototype.js не брезгует, если верить статьям

Фреймворк prototype.js не брезгует и расширением DOM, что уж тут говорить, что вообще ужасно. И не только он, если я не ошибаюсь Mootools тоже этим грешит.

B@rmaley.e><e 29.08.2011 16:12

systemiv, ну и пострадали они от этого.
Цитата:

Сообщение от http://perfectionkills.com/whats-wrong-with-extending-the-dom/
Some examples of proprietary extensions that broke Prototype are wrap property on textareas in IE (colliding with Element#wrap method), and select method on form control elements in Opera (colliding with Element#select method). Even though both of these cases are documented, having to remember these little exceptions is annoying.

Proprietary extensions are not the only problem. HTML5 brings new methods and properties to the table. And most of the popular browsers have already started implementing them. At some point, WebForms defined replace property on input elements, which Opera decided to add to their browser. And once again, it broke Prototype, due to conflict with Element#replace method.

Рекомендую, кстати, почитать цитируемую статью. И эту.

monolithed 30.08.2011 13:07

Если не считать Opera браузером, то в ES5 есть Object.create() , который введен для разрешения некторых конфликтов связанных с Object.prototype в т.ч., а именно определение { value: , writable: , enumerable: , configurable: }

Kolyaj 30.08.2011 13:17

Цитата:

Сообщение от monolithed
Если не считать Opera браузером

:)

melky 30.08.2011 13:17

Цитата:

Сообщение от monolithed (Сообщение 123466)
Если не считать Opera браузером

:haha: ну даёте

B~Vladi 03.09.2011 20:45

Цитата:

Сообщение от Kolyaj
Если не считать Opera браузером

Я вот никогда не считал.


Часовой пояс GMT +3, время: 08:59.