🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.javascript
4 messages
4 total messages Started by bagno Wed, 16 Dec 2009 20:10
smieci w tablicy po dodaniu nowych metod
#49606
Author: bagno
Date: Wed, 16 Dec 2009 20:10
32 lines
1878 bytes
Witam

Mialem sobie tablice i bylo fajnie. Potem dodalem do programu
znaleziony gdzies kawalek kodu (menu typu dropdown) ktory robi
miedzy innymi cos takiego :

if (typeof Array.prototype.indexOf == "undefined") {
 Array.prototype.indexOf = function(item) {
  for (var i = 0; i < this.length; i++) {
   if (this[i] === item) {
    return i;
   }
  }
  return -1;
 }
}

No i program zaczal mi sie sypac. Okazuje sie, ze po dodaniu tej metody
nagle przy przegladaniu tablic dostaje element 'indexOf'

Uzywam zwyklego

for (indeks in tablica)
{
}

i ostatni element to zawsze te indexOf.

Jak sie tego czegos pozbyc ? Nie bede w 100 miejscach dopisywal, ze
jezeli indeks to indexOf to continue.

Czy takie zachowanie jest normalne ? 
Re: smieci w tablicy po dodaniu nowych metod
#49607
Author: William Bonawentura
Date: Thu, 17 Dec 2009 06:49
19 lines
1420 bytes
Użytkownik "bagno" <bagno@o2.pl> napisał w wiadomości 
news:hgbf0u$oc7$1@atlantis.news.neostrada.pl...
>
> Czy takie zachowanie jest normalne ?
>

Tak. To znaczy ty nieprawidłowo wyszukujesz atrybuty WŁASNE obiektu. Winno 
być:

for (indeks in tablica) {
    if (tablica.hasOwnProperty(indeks )) {
        ....
    }
}


Spróbuj "przepuścić" swój kod przez walidator np. www.jslint.com. Pomoże ci 
to unikać typowych błędów JS. 
Re: smieci w tablicy po dodaniu nowych metod
#49608
Author: bagno
Date: Thu, 17 Dec 2009 08:06
25 lines
1699 bytes
Użytkownik "William Bonawentura" <news@ipartners.pl> napisał w wiadomości 
news:hgcka4$28ei$1@news2.ipartners.pl...
>
> Użytkownik "bagno" <bagno@o2.pl> napisał w wiadomości 
> news:hgbf0u$oc7$1@atlantis.news.neostrada.pl...
>>
>> Czy takie zachowanie jest normalne ?
>>
>
> Tak. To znaczy ty nieprawidłowo wyszukujesz atrybuty WŁASNE obiektu. Winno 
> być:
>
> for (indeks in tablica) {
>    if (tablica.hasOwnProperty(indeks )) {
>        ....
>    }
> }

I w kazdej petli mam to sprawdzac ? Ten javascript to jednak dziwny jest.

> Spróbuj "przepuścić" swój kod przez walidator np. www.jslint.com. Pomoże 
> ci to unikać typowych błędów JS.

O niektorych typowych bledach wole nie wiedziec. 
Re: smieci w tablicy po dodaniu nowych metod
#49609
Author: William Bonawentura
Date: Thu, 17 Dec 2009 11:18
12 lines
1463 bytes
Użytkownik "bagno" <bagno@o2.pl> napisał w wiadomości 
news:hgcoqg$615$1@inews.gazeta.pl...

>
> I w kazdej petli mam to sprawdzac ? Ten javascript to jednak dziwny jest.
>

Jest bardzo dziwny :) Musisz sprawdzać w tych pętlach gdzie interesują cię 
tylko klucze WŁASNYCH atrybutów obiektu. Jest to zdecydowanie nieintuicyjne 
w stosunku do innych języków programowania. Ale tak samo jest i np. z 
domyślną globalnością zmiennych.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads