JS nizovi. JS objekt. Višedimenzionalni JavaScript nizovi

Prijelaz iz klasičnog programiranja u objektno orijentirano dugo priznanje, ali još uvijek nedovršeno, i svi suvremeni programski jezici odavno imaju vlastite objektno orijentirane koncepte i sintaksu.

Razlike, stog i rekurzija

Razlike između implementacije objektno orijentirane doktrine u programskim jezicima, razlika u njihovoj filozofiji i razumijevanju nove logike od strane njihovih autora i programera je velika.
Razina organizacije stack podataka i razina rekurzije suvremenih algoritama u području programiranja Interneta su niski i često se ne susreću. Lokalno programiranje koristi stog i rekurziju samo kada postoji jasna potreba ili s izravnom naznakom zadatka za razvoj. Te okolnosti ukazuju da je dinamika varijable i dinamika skupa vrijednosti (polja) u procesu izvođenja algoritma na početnoj razini razvoja prikazivanja podataka i algoritama.


Možda to nije slučaj, a svijet internetskog programiranja se ubrzano razvija. Ako je varijabla (uključujući status u nizu ili objektu) stog, tada se pojavljuje povijest vrijednosti i mogućnost kretanja kroz nju u traženju željene informacije (vrijednosti) ili optimalnog rješenja (skup vrijednosti). Ako je funkcija (algoritam) slijed postupaka bez rekurzije (bez mogućnosti da se nazove) - to je slijepa ulica koja se ne može razviti bez pomoći treće strane (bez sudjelovanja programera). Čak i ako svrha funkcije nije razvoj njegove funkcionalnosti, negoRekurzivna funkcija, može zahtijevati status potpuno opremljenog rješenja, i to je važno, ta razina programiranja i procjene vještina programera.

Varijabla, njezina vrijednost i mjesto u algoritmu

Razmak između varijable i polja je zanemariv na programskoj liniji. Varijable su odmah postale uobičajene i odmah su dovele do stvaranja različitih struktura podataka. Pojavili su se nizovi, strukture, zapisi i drugi nacrti prvih programskih jezika. Kad su Fortran i Baisick pobijedili, objekti nisu ni sanjali, a klasična sintaksa operatora bila je zasebna linija koda, a samo u iznimnim slučajevima jedan par operatora mogao bi biti napisan u jednom koraku.
Nizovi su se pojavili brzo, ali još uvijek nema razumijevanja varijable kao mjesta u algoritmu, tj. Trenutka promjene njegova značenja i pojma povijesti tih trenutaka. Koncept "povrat na staro" - povlastica aplikacija. Operativni sustavi i programski jezici nikada nisu uzimali u obzir svrsishodnost i važnost povijesti akcija (događaja) i prava programera /korisnika da ih poništi. Do sada, pojam povijesti djelovanja i mogućnost kretanja na njemu (poništavanje i ponavljanje) nije prepoznat kao "vodeći" autoritet prednjeg ruba informacijske tehnologije, nego koliko je dobar i ispravan? Pravo na otkazivanje odluke, promjenu ponašanja, traženje optimalnog rješenja iz usvojenog:
  • prirodno pravo osobe (i programera i korisnika);
  • objektivna funkcionalnost bilo koje aplikacije, dio programskog koda. Vrijeme je da ga shvatimo i prepoznamo kao proizvođača operativnih sustava i instrumentalnihalati za programiranje. Varijabla ili niz nije jedna vrijednost ili skup vrijednosti, ona je uvijek povijest vrijednosti i njezina dinamika, čak i ako programer namjerno ne koristi ovu objektivnu okolnost. Ako bi bilo drugačije, debagiranje bi bio kod i povijest promjene vrijednosti varijabli, polja i objekata - to je potpuno drugačija razina pouzdanosti rezultata programera. To je program za pronalaženje pogrešaka koji radi na razini dinamike aktivne funkcije, a ne određeni položaj u statičkom kodu.

    Jezik preglednika, njegovi nizovi i objekti

    Teorija programiranja nije toliko popularna kao praksa programiranja na javascript. To je normalno stanje. Stranica koja se nalazi u pregledniku odmah analizira DOM stablo i postaje izvor podataka u obliku
  • varijabli;
  • nizovi;
  • objekti.
  • Prilikom sastavljanja skripte, programer koristi postojeće JS nizove, stvara vlastite nizove, opisuje privremene varijable i razvija učinkovite objekte sučelja, podatke i dijalog posjetitelja.
    Mjesta za povijest vrijednosti i rješenja Nema vremena za dizajniranje promjena u povijesti varijabli i polja, ali za objekte, to se radi po potrebi. Rezultat: Web resurs rijetko osigurava "povrat na staro", a koncept povijesti "dugo je bio" u izborniku preglednika u kontekstu kretanja povijesti stranice: naprijed, unatrag ili odabirom s popisa.

    Pojam povijesti vrijednosti na razini varijabli nije naveden. U stogu i rekurziji - nema potrebe, osim ako jasno proizlazi iz suštine zadatka ili projiciranog algoritma.

    Bok,

    Od davnina, programiranje za učenje počelo je s opisom jednostavne varijable "ja sam varijabla!" i izlazom njezine vrijednosti "Hello, World !!".
    U ovom primjeru, ništa ne sprječava JS nizove da se pretvaraju u varijablu s jednom vrijednošću, a varijabla i_am_VARIABLE je niz. Postoji značajna razlika između "[]" i "{}", ali nema razlike između jednostavnog i jednostavnog. Bilo koja varijabla može promijeniti svoj tip bilo gdje u algoritmu iu bilo koje vrijeme. HTML elementi stranice učitane u preglednik puni su događaja, od kojih većina programer prati i dodjeljuje funkcionalnost koja im je potrebna za javascript kod. JS funkcije koje se pozivaju događajima na DOM elementima mogu modificirati JS nizove u bilo kojem trenutku. To daje priliku da se formira priča, ali malo je ljudi koristi.

    Značajke opisa polja i objekata

    Implementacija objektno-orijentiranog programiranja (OOP) u javascriptu - najbolje, na jednostavnoj osnovi da ovaj jezik preglednika uvijek radi na stvarnim objektima. Unatoč činjenici da su stvarni objekti objekti stranice pretvorene u DOM, tim se objektima upravlja funkcionalnošću stranice i aktivnostima posjetitelja. A ovo je JS iskustvo i rad s nizovima, kao i sa stvarnim podacima.
    U gornjem primjeru, popunjavanje varijable aSimple (zapravo, ovaj niz) dolazi samo od tri operatora, a dobiva se skup od tri vrijednosti: "Fortran", "Algol" i "Basic". JS, kao asocijativni niz, ne tumači opis varijable s uglatim zagradama. Naprotiv, svaki pokušaj uporabe varijable koja nije opisana u kovrčavim zagradama osuđena je na neuspjeh. U opisu objekataTakođer su važna podnožja i kodiranje. Ako će se ubuduće polje ili objekt koristiti u JSON formatu, potrebno je UTF-8 kodiranje i samo dvostruki navodnici. Ako je opis "{}" primijenjen na varijablu, onda je to dinamički niz tekstualnih ključeva, moguće cjeloviti objekt s metodama i vlastitom strukturom podataka.

    Stack unutar niza

    Niz je skup vrijednosti. Broj je tehnički neograničen, ali korištenje velikih količina podataka nije prikladno. Element niza može biti drugi niz. Sam niz je jednostavan oblik objekta. Dopušteno je stvaranje višedimenzionalnih nizova, ali velik broj dimenzija može zakomplicirati zadatak. Volumen polja i broj dimenzija u njemu moraju biti u razumnim granicama. To pojednostavljuje razvoj algoritma i njegov razvoj. javascript ne nameće programski stog i ne zahtijeva obveznu rekurzivnost od programerskih funkcija. Svijet zadataka i odluka je previše kompliciran da bi nametnuo nešto sintakse, ali alati za konstruiranje stog u JS-u se izvršavaju u cijelosti.
    Klasične push i pop metode mogu se primijeniti na bilo koju varijablu opisanu s "[]" i to će biti dinamički niz. Broj elemenata u njemu raste s metodom push, a kada izvlači element metodom pop, "aktivni" postaje posljednji element. Rezultat pop metode je posljednji element niza, tako da kada se primjenjuje pop, sljedeći prethodni element polja. Kada dodajete element pomoću metode push, ona dolazi kao posljednja. Manipulirajući push i pop pozivima, programer primastog. Ako JS nizovi dolaze /odlaze u stog, to je dinamika (povijest) skupova vrijednosti ili rješenja.

    Reverse stack of plates: niz u nizu

    Stack je uvijek bio u odnosu na hrpu ploča: svako novo jelo je samo iznad, i možete uzeti samo odozgo. Uvijek je dostupna samo gornja posuda (pop metoda) ili mjesto iznad nje (metoda push). javascript je proširio ovu paradigmu i pružio priliku za rad s hrpom posuđa, kako u klasičnoj verziji, tako iu suprotnom: programer može smatrati početak stog posuda kao stog kroz prvi element. Metode pomaka i unshifta slične su pop i push, ali rade s prvim elementom. Niz je skup vrijednosti, a metode spoja i split su niz nizova. Granica između niza i varijable nedostaje. Sljedeći primjer pokazuje ovo.
    Isprva, aSimple niz je opisan kao "[]" i imao je tri stvarne vrijednosti. Tada se jednostavna pretvorila u varijablu - niz znakova. Zatim, u jednostavnom, tri elementa su napisana koja su spojena u jednu liniju koristeći metodu spajanja, i kreirali novi aStr niz koristeći split metodu bez uporabe opisa [].

    Stog iz DOM stabla

    Stack nije uvijek niz koji je uređen na uobičajeni način. Objekti nisu uvijek metode koje pružaju pristup sadržaju nekog objekta, ali elementi DOM stabla uvijek služe kao izvor događaja koji obrađuju skup funkcija na javascriptu. Ako predstavite sve potencijalne izvore događaja s jednim vremenskim odsječkom u vrijeme barem jednog događaja, tada:
  • može postojati samo jedan događaj;
  • mogu postojati dva ili više događaja;
  • Moguće je posjetiti istu stranicu ilinekoliko posjetitelja;
  • mogući pristup poslužitelju klijentu, tj. Pregledniku;
  • dopuštena aktivnost AJAX procesa;
  • Možda je pokrenut jedan ili više tajmera.
  • Ovo je pravi skup događaja ozbiljnog mjesta. Ostvariti ga kao nizove ili objekte gotovo je nemoguće. To je potpuno drugačija razina programiranja, u kojoj su statički kod, tijelo funkcija i metoda bitni, ali je nemoguće popraviti ili pratiti proces ako nema jasne predodžbe o stanju i dinamici cijele slike. Problem s OOP-om i prednost klasičnog programiranja je u tome što stvarno objektno-orijentirano programiranje rekurzivno pokreće mnogo objekata koji su međusobno povezani i mogu pokretati instance već rade (pokreće ih neki drugi objekt) ili sami) predmete.
    Nemoguće je razumjeti koja vrsta kopiranja funkcionira pomoću koda funkcije ili metode. Šifra je statična, a koja je instanca aktivna - dinamika. Aktivna točka prostora je statički kod, ali je razina rekurzije i stanja stvarnih podataka stvarni problem.

    Stvarni objektno orijentirani projekt

    Praktični JS objekt odlazi u upravljanje projektom PHPOffice /PHPWord. Ova knjižnica sadrži mnoge PHP objekte na strani poslužitelja. Većina objekata ostvaruje svojstva objekata Word Word procesora i namijenjena su čitanju i formiranju * .docx datoteka.
    Knjižnica ne uključuje JS objekt za kontrolu procesa stvaranja datoteke rezultata, već uključujejedinstven primjer međusobno povezanog sustava objekata. Bilo koja datoteka * .docx može sadržavati nekoliko fontova, fontova, boja, podnizova i indeksa podstabla. Moderni dizajn teksta koristi mnogo tehnika i omogućuje vam da stvorite jedinstvene sadržaje i dokumente za registraciju. Bilo koji odlomak * .docx datoteka može biti tablica. Tablica može imati mnogo stupaca i redaka, ali kreirati višedimenzionalne nizove u retke ili stupce neće raditi. Jedinstveni objekt - stanica, koja može biti jednaka retku ili stupcu. Ako se spojite na ćeliju, ona može sadržavati neograničen broj odlomaka. Svaki odlomak može imati bilo kakvo oblikovanje koje je dopušteno pri formatiranju paragrafa glavnog teksta. Svaki odlomak u ćeliji može biti stol sa svim gore navedenim značajkama! PHPOffice /PHPWord knjižnica je jedinstven primjer rekurzije i organizacije podataka. Možda programeri MS Worda koriste svoje specifične radne procese u području programiranja, ali na JS: niz objekata, rekurzivno stvara tablicu tablica, što vam omogućuje da imate onoliko odlomaka koliko želite, tablice, privitke jedni drugima - stvarnost koja se provodi učinkovitije od PHP-a opcija.

    Problemi rekurzija i stogova: objektno orijentirano razmišljanje

    Stavak sadrži rečenice, fraze, riječi i objekte. Svaki tekstualni dio paragrafa može imati podebljan, kurziv ili podcrtani crtež. Bilo gdje u tekstu može biti off-line indeks ili promjena boje slova. Objekt stavka treba omogućiti rekurziju opcija crtanja, ali paragraf ne može biti umetnut.međusobno. Tablicu možete staviti u paragraf. Tablica može imati mnogo ćelija, au svakom od njih postoji mnogo odlomaka i mnogo tablica. Stvaranje objekata prema svojstvima teksta:
  • debljina;
  • ​​
  • nagib;
  • podcrtavanje;
  • precrtavanje;
  • promjena boje;
  • indeks superlistke;
  • podređeni indeks;
  • i sur. -
  • dovodi do oblikovanja objekata. Uklanjanje stavki stavka nije stvarno izbrisano. MS Word pruža mogućnost vraćanja, odnosno obnavljanje izbrisanih elemenata. Povijest poništavanja /ponavljanja u procesorima riječi je pravilo palca. To se ne može reći za JS: brisanje elementa niza znači gubitak ako ne navedete vlastitu padajuću opciju. Objekt stavka ne može uključivati ​​objekte rečenica, fraza ili riječi. To je suvišno, nije ažurno i omogućit će izgradnju skladnog sustava objekata * .docx - dokumenta. Tablica je neovisan objekt, ali je usko povezana s objektom stavka. Ta dva objekta međusobno se mogu međusobno pozivati, a razina ugnježđivanja takvih poziva nije ograničena. Postoji problem na kojem programer misli ili program za ispravljanje pogrešaka radi. Vrlo je teško artikulirati rješenje ili pronaći pogrešku ako mislite na klasičan način na razini koda. Ali ako imate ideju o dinamici podataka i trenutnoj razini poziva na računu (stack), lako je dalje se kretati, identificirajući u tijeku razvoja greške, nesigurnosti i slabosti.
    Savršena osnova za organiziranje stog je JS niz, ne nužno u JSON formatu, pogodan za dijeljenje između poslužitelja i klijenta.Transformacijom poslužiteljske komponente - PHPOffice /PHPWord knjižnice - AJAX slijeda redova, možete dobiti čitljivu verziju "gibanja" iz pravog dokumenta. U stvari, funkcionalnost knjižnice je rastavila dokument i formirala sustav objekata, ali ga možete pregledati u pregledniku i izgraditi odgovarajući dinamički sustav objekata. JS dodaje niz redaka nizu - to nije problem. Protokol rekurzivnih razina bit će dostupan, logika kretanja po razinama gniježđenja je očita. Moguće je stvoriti povijest pomaka pomoću vrijednosti varijabli, polja, koda metoda objekata i funkcija.

    Rekurzija u sustavu različitih objekata

    Objekti i nizovi u javascriptu uvijek su dobro rješenje. PHPOffice /PHPWord klase projekti su uvijek dobar server verzija programa. Postoji razlika između programiranja u PHP-u i programiranja u okruženju preglednika. Objekt preglednika "živi" sve dok posjetitelj ne dođe na web-lokaciju. Čak i kada posjetitelj promijeni stranicu stranice u drugu, javascript omogućuje razvojnom programu premještanje prethodno stvorenog objekta na novu stranicu. Programer može samostalno upravljati izradom stranica i pomicanjem potrebnih DOM stabala. Ali sami po sebi objekti i polja u javascriptu nisu stvarni objekti i podaci o posjetiteljima. U slučaju dokumenata posjetitelj može biti student, budući kandidat, zaposlenik gradske uprave, itd., Za te kategorije posjetitelja potrebni su stvarni objekti: dokumenti, a ne DOM-ovi, izvorni za javascript PHPOffice /PHPWord klasne projekte su izvrsna rješenja. i iskustvo stvaranja komplementarnih objektnih sustava, prilikapraćenje rekurzije, snimanje operacija slaganja, upravljanje stvaranjem različitih objekata, ugrađenih jedna u drugu.
    Objekt JavaScript je potraga za dinamikom, ali kada je ta želja poduprta stvarnom praksom dobre poslužiteljske aplikacije, dobar stvarni zadatak sa stvarnim sustavom objekata je želja da bude objektivna, izvediva, sigurna i ostvariva.

    Povezane publikacije