Я бы не стал, потому что, ИМХО, рано или поздно это определенно может привести к коллизиям и создать потенциальную ошибку, которую очень трудно обнаружить.
В любом случае я расширяю некоторые базовые простые нативные объекты Javascript, такие как String.trim, я всегда стараюсь проверить, существует ли он уже, используя простой тест if:
if(!String.prototype.trim)
String.prototype.trim = function() { return this.replace(/^\s\s*/, '').replace(/\s\s*$/, ''); }
Вы можете сделать то же самое с addClassName. Разница в том, что делать это с помощью простой функции, такой как String.trim, сложно, что может привести к проблемам в будущем, потому что даже если в движке браузера есть String.trim (на самом деле он есть в FF), такая функция точно будет делать что делает мой String.trim, поэтому вы никогда не увидите различий в рабочем процессе вашего веб-приложения.
Более сложная функция, такая как переопределение querySelectorAll, может привести к различиям между тем, как ее реализует браузер, и вашей реализацией. Например: порядок возвращаемых элементов может быть другим, функция браузера возвращает коллекцию, а ваша — массив и другие проблемы. Поэтому, когда вы запускаете свое веб-приложение в браузере, который реализует querySelectorAll, это может привести к тому, что ваше веб-приложение больше не будет работать должным образом, и попробуйте найти ошибку !!!
Возможно, querySelectorAll — не лучший пример, но я надеюсь, что объяснил концепцию.
person
Marco Demaio
schedule
26.08.2010