Все вы, конечно, знаете, что JavaScript работает на прототипах, и что в JavaScript почти все - объект, и, соответственно, имеет прототип, и, соответственно, его можно расширять.
Но не все знают, что делать это не нужно.
А вот пример из жизни, почему не нужно.
Есть, значит, код на JS, который написали одни очень умные парни. Примерно такой:
var arr = ['this','that'];
for (var i in arr) {
if ($.trim(arr[i]).match(/this/)) {
alert('This is this: '+arr[i]);
}
}
Нормальный код, находит "this" в массиве и сообщает об этом алертом. Ну я хз зачем его написали, главное - работает как часы!
Пока в проект не добавили либу других очень умных парней, которые знают про прототипы и вовсю пользуются. Либа мегаполезная, хоть и состоит из двух строчек, одна из которых - комментарий:
// теперь можно писать myarr.first() для любого массива!!! ;)
Array.prototype.first = function() {return this[0]};
Что же случится, если совместить эти два куска кода?
// теперь можно писать myarr.first() для любого массива!!! ;)
Array.prototype.first = function() {return this[0]};
var arr = ['this','that'];
for (var i in arr) {
if ($.trim(arr[i]).match(/this/)) {
alert('This is this: '+arr[i]);
}
}
Упс. Кажется, нашлось что-то лишнее =(
Сегодня дядя Дубр дает ценные советы совершенно бесплатно.
Первым парням: юзайте старый добрый i=0; i < arr.length; i++ для массивов, чо десять раз по клаве нажать лень! Я уж не предлагаю hasOwnProperty()...
Вторым парням: юзайте старый добрый arr[0] или нафигачьте обертку или плагин для jQuery. Потому что первые парни меня хрен когда услышат.