Я задаю этот вопрос на нескольких форумах, так как хочу привлечь к этому как можно больше внимания.
Я помню, как около десяти лет назад люди говорили мне, что делают что-то вроде:
Код (разметка): или
Код (разметка): Было плохо. Я могу вспомнить только две причины:
1) Возможность конфликта пространства имен с будущими фактическими методами объекта ECMAScript.
2) Не наследуется должным образом в IE7/ранее на Node или потомках Node, таких как Element.
Поскольку меня больше не волнует IE9/более ранние версии (переход к сценарному отключению поведения, поскольку на самом деле у меня плавная деградация) и избегаю официальных проблем с пространством имен, добавляя в качестве префикса двойное подчеркивание... но я мог бы поклясться, что было больше причин не делать этого .
Я просто не могу вспомнить, что это были за причины, и мой Google-фу меня с треском подводит.
Такое ощущение, что я могу сказать:
Код (разметка): более удобен/разумен, чем ДЕЙСТВИТЕЛЬНО загрязнять глобальное пространство имен:
Код (разметка): и...
Код (разметка): поскольку он удаляет из него проход значения, поскольку «это» жестко закодировано в обработчике, удаляя дополнительные манипуляции со стеком.
Итак... может ли кто-нибудь перечислить другие проблемы с расширением/морфификацией системных объектов браузера, таких как String, Document, Node, Element и т. д. и т. п.?
Я помню, как около десяти лет назад люди говорили мне, что делают что-то вроде:
var escaped = htmlSpecialChars(myString);
Код (разметка): или
function htmlSpecialChars(str) {
Код (разметка): Было плохо. Я могу вспомнить только две причины:
1) Возможность конфликта пространства имен с будущими фактическими методами объекта ECMAScript.
2) Не наследуется должным образом в IE7/ранее на Node или потомках Node, таких как Element.
Поскольку меня больше не волнует IE9/более ранние версии (переход к сценарному отключению поведения, поскольку на самом деле у меня плавная деградация) и избегаю официальных проблем с пространством имен, добавляя в качестве префикса двойное подчеркивание... но я мог бы поклясться, что было больше причин не делать этого .
Я просто не могу вспомнить, что это были за причины, и мой Google-фу меня с треском подводит.
Такое ощущение, что я могу сказать:
var escaped = myString.__htmlSpecialChars;
Код (разметка): более удобен/разумен, чем ДЕЙСТВИТЕЛЬНО загрязнять глобальное пространство имен:
Object.addProperty(String.prototype, '__htmlSpecialChars', {
Код (разметка): и...
String.prototype.__condense = function() {
Код (разметка): поскольку он удаляет из него проход значения, поскольку «это» жестко закодировано в обработчике, удаляя дополнительные манипуляции со стеком.
Итак... может ли кто-нибудь перечислить другие проблемы с расширением/морфификацией системных объектов браузера, таких как String, Document, Node, Element и т. д. и т. п.?