Primeri predmetov JavaScript

Predmeti so temelj javascripta. Vdelani podatkovni tipi so predstavljeni kot objekti. Da bi bil uspešen razvijalec javascripta, morate imeti jasno predstavo o tem, kako delujejo. Gradbeni bloki objekta se imenujejo njegove lastnosti lastnosti objekta javascript. Uporabljajo se za opis katerega koli vidika predmeta. Lastnost lahko opiše dolžino seznama, barvo neba ali datum rojstva osebe. Ustvarjanje objektov je preprost postopek. Jezik ponuja sintakso, znano kot objektni literal, ki je predstavljena z zavitimi oklepaji.

Dostop do lastnosti

Jezik ponuja dva vnosa za dostop do lastnosti. Prvi in ​​najpogosteje znani kot točkovno označevanje. Z označevanjem točke lahko dostop do vira dosežete tako, da podate gostiteljsko ime objekta, ki mu sledi obdobje in ime lastnosti. Na primer, ko je bila predmetu .foo prvotno dodeljena vrednost ena, je njena vrednost 2 po izvršitvi operaterja objekta javascript.


Alternativna skladnja za dostop je znana kot vnos v oklepaju. V zapisu za ime objekta sledi niz oglatih oklepajev. V njih je ime lastnosti podano kot niz: object ["foo"] = object ["foo"] + 1. Je bolj izrazen kot point-notacija, ker omogoča spremenljivki, da poda vse ali del imena lastnosti. To je mogoče zato, ker interpretacijski objekt javascript samodejno pretvori izraz v niz in nato prejme ustrezno lastnost. Imena lastnosti so ustvarjena "na let" z združevanjem vsebine spremenljivke f z nizom "oo": var f = "f"; predmet [f + "oo"] = "vrstica". Omogoča označevanje nosilcevImena lastnosti vsebujejo znake, ki so prepovedani z zapisom točk. Na primer, naslednji operater je v oklepajih popolnoma zakonit. Če pa uporabnik poskuša ustvariti isto ime lastnosti oznake zapisov, bo naletel na sintaktično napako:

predmet ["! @ # $% & Amp; * ()."] = True. Dostop do lastnosti ugnezdenih objektov javascript je mogoče dobiti s povezovanjem točk in /ali oklepajev. Na primer, naslednji objekt vsebuje vdelani objekt z imenom baz, ki vsebuje drug objekt z imenom foo, ki ima lastnost z imenom vrstice petih: var objekt = {baz: {foo: {bar: 5}}}. Naslednji izrazi imajo dostop do gnezdenega premoženja. Prvi izraz uporablja zapis točke, drugi izraz pa kvadratni zapis. Tretji izraz združuje oba vnosa za dosego istega rezultata:
  • object.baz.foo.bar;
  • predmet ["baz"] ["foo"] ["bar"];
  • predmet ["baz"] Foo ["bar"].
  • Izrazi, podobni tistim, prikazanim v prejšnjem primeru, lahko povzročijo poslabšanje zmogljivosti v primeru zlorabe in povzročijo neuspeh objekta javascript. Vrednotenje vsake točke ali izrazov v oklepajih zahteva čas. Če se isto lastnost uporablja večkrat, je smiselno enkrat dostopiti do lastnine in nato shraniti vrednost lokalne spremenljivke za vse prihodnje cilje.

    Funkcija kot metoda

    Če se funkcija uporablja kot lastnost objekta, se imenuje metoda. Podobno kot pri lastnostih, so prikazane v zapisu objektnih literalov. Na primer: var objekt = {sum: funkcija (foo bar) {vrne foo + bar;}}. Metode javascript-objekta lahko prikličete izz uporabo oznak in oklepajev. Naslednji primer kliče metodo sum () iz prejšnjega primera z obema vnosoma:
  • object.sum (1 2);
  • predmet ["sum"] (1 2).
  • Oznaka dobesednega objekta je uporabna za ustvarjanje novih objektov, vendar ne more dodajati obstoječih lastnosti ali metod. Na srečo je dodajanje novih podatkov tako enostavno kot ustvarjanje operaterja dodelitve. Ustvari se prazen predmet. Nato z uporabo operaterjev dodajanja dodamo dve lastnosti, foo in bar, pa tudi metodo baz:
  • var object = {};
  • object.foo = 1;
  • object.bar = nič;
  • object.baz = function () {return "hello from baz ()";}.
    Inkapsulacija programov
    Osnovna ideja objektno usmerjenega programiranja je razdelitev programov na manjše dele in vsak od njih je odgovoren za upravljanje svoje lastne države. Zato je lahko nekaj znanja o tem, kako del programa deluje lokalno v tem delu. Nekdo, ki se ukvarja s preostalim delom programa, se ne bi smel spomniti ali ga celo vedeti. Kadar koli se ti lokalni podatki spremenijo, morate kodo posodobiti neposredno okoli nje. Različni deli takšnih programov med seboj komunicirajo prek vmesnikov, omejenih funkcijskih sklopov ali povezav, ki zagotavljajo uporabno funkcionalnost na bolj abstraktni ravni in skrivajo njihovo točno izvajanje. Taki deli programa so modelirani z uporabo objektov. Njihov vmesnik je sestavljen iz določenega nabora metod in lastnosti. Lastnosti, ki so del vmesnika, se imenujejo javne. Drugi, ki tega ne storijobi se morala sklicevati na zunanjo kodo, imenovano zasebno.
    Številni jeziki omogočajo razlikovanje med javnimi in zasebnimi lastnostmi in ne dovoljujejo zunanjega dostopa do zasebnih. javascript, zopet vzel minimalističen pristop, še ni bil dosežen. Trenutno poteka delo za dodajanje tega jezika. Zato bodo javascript-programerji uspešno uporabili to idejo. Dostopen vmesnik je praviloma opisan v dokumentaciji ali komentarjih. Prav tako je običajno, da na začetku imen lastnosti označite podčrtaj (_), ki označuje, da so te lastnosti zasebne. Ločitev vmesnika od izvajanja je odlična ideja. Ponavadi se imenuje enkapsulacija.

    Lastnosti

    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_1.jpeg
    z oklepaji {} se imenuje literal objekta. Nekatere lastnosti lahko takoj vnesete v takšne oklepaje {}. Na primer, pari "ključ: vrednost in tako naprej": pustite uporabnika = {//ime objekta: "John", //po ključu "ime" shrani vrednost "John" starost: 30 //po ključu "starost" shrani vrednost 30}. Lastnost ima ključ (imenovan tudi "name" ali "id") pred dvopičjem ":" in vrednost desno od nje. Uporabniški objekt ima dve lastnosti. Nastali objekt JavaScripta uporabnika z dvema podpisanima datotekama z oznako "ime" in "starost". Datoteke lahko kadar koli dodate, izbrišete in preberete. Vrednosti lastnosti so na voljo z oznako točke. Lahko je katere koli vrste. Dodate lahko logično vrednost. Če želite izbrisati lastnost, uporabite delete v primeru napake objekta javascript.

    Vsi predmeti javascript napak so potomci objekta Error alipodedovani predmet:
  • Sintaksa Napaka objekt je podedovan iz napake objekta.
  • JSON Parse Napaka določenega tipa sintakse Napaka objekta.
  • Da bi še poglobili razumevanje, kako se aplikacije ukvarjajo z javascript napakami, je bolje, da se seznanite z Airbrake javascriptom, orodjem za sledenje napak v realnem času in takojšnjim razumevanjem, kaj je narobe z javascript kodo. Sporočila o napakah, ki jih uporabnik lahko sprejme pred brisanjem objekta javascript:
  • Napačen kontrolni znak v literalnem nizu.
  • Slab znak v dobesednem dobesednem besedilu.
  • Slab izhod Unicode.
  • Napačen ubežni znak.
  • Neprekinjeni niz.
  • Nepričakovana nenumerična koda.
  • Za decimalno vejico ni številk.
  • Neomejeno število.
  • Ni številk za indikator stopnje.
  • Za oznako eksponenta ni števk.
  • Eksponencialni del nima številk.
  • Nepričakovan konec podatkov.
  • Nepričakovana ključna beseda.
  • Nepričakovan simbol.
  • Konec podatkov pri branju vsebine predmeta.
  • Pričakovano ime lastnosti ali '}'.
  • Računalniške lastnosti

    V literaturi objekta lahko uporabite kvadratne oklepaje. To se imenuje izračunane lastnosti. Primer je podan spodaj.
    Vrednost premoženja vichislima je preprosta: [sadje] pomeni, da je treba ime premoženja vzeti iz sadja. Torej, če obiskovalec vstopi v "jabolko", bo vreča {apple: 5}. Lahko uporabite bolj zapletene izraze v oglatih oklepajih: let sadje = 'jabolko'; pusti vrečko = {[sadje + 'računalniki']: 5 //bag.appleComputers = 5};Oglati oklepaji so veliko močnejši od etiket točk. Omogočajo imena in spremenljivke lastnosti. Toda pisanje je tudi težje. Ker večino časa, ko so imena nepremičnin znana in preprosta, uporabimo piko. In če potrebujete nekaj bolj zapletenega, potem preklopite na kvadratne oklepaje.

    Rezervacija besed

    Spremenljivka ne more imeti imena, ki je enako eni od rezerviranih besed, na primer za, pusti, vrni, itd. Toda pri razvrščanju predmetov javascript take omejitve ni. .
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_2.jpeg [/thumb]
    Načeloma je vsako ime dovoljeno , vendar obstaja nekaj posebnega: "__proto__" prejme posebno pritožbo zaradi zgodovinskih razlogov. Na primer, lahko nastavite njegovo vrednost, ki je drugačna od predmeta: let obj = {}; obj .__ proto__ = 5; opozorilo (obj .__ proto__); //[predmet Object], ni deloval tako, kot je bilo predvideno Kot je jasno iz kode, je namen primitive 5 prezrt. To je lahko vir napak in celo ranljivosti, če operater namerava v objekt shraniti poljubne pare ključ /vrednost in dovoliti obiskovalcu, da določi ključe. V tem primeru lahko obiskovalec izbere "proto" kot ključ in doda predmet javascript. Obstaja način, kako narediti objekte, ki jih obravnava __proto__ kot redno lastnost. Obstaja tudi druga podatkovna struktura, ki podpira poljubne ključe.

    Celotne lastnosti

    Izraz "celoštevilska lastnost" tukaj pomeni niz, ki se lahko spremeni iz celote brez spreminjanja. Tako je na primer "49" celo ime lastnosti, ker je, ko je pretvorjeno v celo število in nazaj, enako. Toda "+49" in "1.2" nistatake. Po drugi strani, če ključi niso cela števila, se pretvorijo v vrstni red ustvarjanja. Primer spodaj.
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_3.jpeg [/thumb]
    Če želite odpraviti težavo s pomočjo telefonskih kod, lahko zavajati, tako da kode ne izpolnjujejo pogojev. Dodajanje »+« (znak plus) je dovolj pred vsako kodo. Sedaj bo deloval kot sestanek. Razlika med predmeti od primitivnih je, da so shranjeni in kopirani "s povezavo." Primitivne vrednosti so dodeljene in kopirane "kot celo število". Spremenljivka shranjuje "naslov v pomnilniku", ne pa samega predmeta ali "povezave" z njim. Uporabite lahko katero koli spremenljivko za dostop in spreminjanje njene vsebine.
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_4.jpeg
    V zgornjem primeru je prikazano, da obstaja samo ena vnesite predmet in admin. Če bo kasneje uporabil še en ključ (uporabnik), bo uporabnik zaznal spremembe. Operaterji enakosti == in stroga enakost === za objekte delujejo na enak način. Oba objekta sta enaka, samo če sta isti predmet. Za primerjave, kot je obj1 & gt; obj2 ali za primerjavo s primitivnimi obj == 5 predmeti se pretvorijo v primitive. Iskreno, take primerjave so zelo redke in so običajno posledica napak pri kodiranju.

    Preverjanje objekta javascript

    Objekti imajo dostop do vseh lastnosti. Če pa sploh ne obstaja, to ne bo napaka. Neodvisno se vrne samo dostop do neobstoječih lastnosti. Zagotavlja zelo pogost način za testiranje lastnosti in primerjavo z nedefinirano.Spodaj je primer.
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_5.jpeg
    Uporaba lastnosti »in« za lastnosti, ki ohranjajo nedefinirano . Običajno se opravi stroga "=== undefined" preverjanje primerjave. Obstaja poseben primer, ko ne uspe in "in" deluje pravilno. To je, kadar lastnost objekta obstaja, vendar se ohranja nedefinirana.
    [pill] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_6.jpeg [/thumb]
    V zgornji kodi je lastnost obj.test tehnično. . Zato operater deluje pravilno. Podobne situacije se pojavljajo zelo redko, ker ni definirano. Običajno se uporabljajo ničelne "neznane" ali "prazne" vrednosti. Tako je operater v, dejansko, gost v kodi.

    Forinov cikel

    Za krmarjenje po vseh tipkah od objekta do objekta obstaja posebna oblika zanke: forin. To je popolnoma drugačna stvar za (;;) oblikovanje. Spodaj je primer.
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_7.jpeg
    Potrebno je paziti, da vsi graditelji «za» vam omogočajo, da v zanki razglasite spremenljivko zanke, kot je tipka let. Namesto tega lahko uporabite drug tip imena spremenljivke. Na primer, za (let prop v obj) se prav tako pogosto uporablja. Obstaja alternativna "kvadratna oklepaja", ki deluje z vsako linijo.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_8.jpeg
    Ta točka zahteva, da ključi, ki se zavedajo javascripta Objekt je bil veljaven ID spremenljivke, kar pomeni, da ni presledkov ali drugih omejitev. Paziti je treba, da je bila črta znotraj oklepaja pravilno citirana. Kvadratni oklepaji prav tako zagotavljajo način, da ga dobiteime nepremičnine kot rezultat katerega koli izraza, v nasprotju z dobesedno črto - s spremenljivko: let key = "všeč ptice"; //enako kot uporabnik ["likes birds"] = true; uporabnik [tipka] = res Tu se lahko tipka spremenljivke izračuna med izvajanjem in je odvisna od uporabniškega vnosa, nato pa se uporabi za dostop do lastnine. To daje programerjem večjo prilagodljivost. Pikasta notacija se ne more uporabljati na enak način, saj bo razčlenjen objekt javascript. Spodaj je primer.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_9.jpeg

    Const objekt

    Navedeni objekt const se lahko spremeni. Primer je podan spodaj.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_10.jpeg
    Lahko se zdi, da je javascript objekt na liniji (*) bo povzročil napako, vendar ni. To je zato, ker const zajame vrednost samega uporabnika. Potem uporabnik ves čas vodi povezavo do istega objekta. Vrstica (*) gre znotraj predmeta, ne zaseda uporabnika. Const bo naredil napako, če boste poskusili namestiti uporabnika in nekaj drugega. Kloniranje in združevanje, Object.assign ustvari drugo povezavo do istega objekta, če ga želite podvojiti. To je tudi izvedljivo, vendar nekoliko bolj zapleteno, ker javascript nima vgrajene metode. Pravzaprav je to redko. Kopiranje po povezavi se uporablja v večini primerov. Če pa res potrebujete, morate ustvariti objekt javascript in kopirati strukturo obstoječega s kopiranjem njegovih lastnosti na primitivni ravni. Spodaj je primer.
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_11.jpeg
    In za to lahko uporabite tudi metodo Object.assign. . Argumenti dest in src1, srcN so objekti.Kopira lastnosti vseh objektov src1, srcNINTO dest. Z drugimi besedami, lastnosti vseh argumentov, začenši z drugim, se kopirajo v prvem. Potem se vrne v dest. Z njim lahko na primer združite več predmetov v enega.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_12.jpeg
    In lahko uporabite tudi Object.assign za zamenjavo zanke preprosto kloniranje. Kopira vse lastnosti uporabnika v prazen objekt in ga vrne, tako kot zanko, vendar krajši. Do sedaj je bilo predpostavljeno, da so vse uporabniške lastnosti primitivne. Ampak lastnosti so lahko povezave do drugih objektov. Če želite to popraviti, morate uporabiti klonsko zanko, ki preveri vsako vrednost uporabnika [ključ] in, če je predmet, ponovi njegovo strukturo. To imenujemo "globoko kloniranje". Obstaja standardni algoritem za globoko kloniranje, ki obravnava zgornji primer in bolj zapletene primere, imenovane algoritem strukturiranega kloniranja. Da ne bi izumili kolesa, lahko uporabite delovno izvedbo iz knjižnice javascript lodash, metoda se imenuje _.cloneDeep (obj).

    Napredne tehnike

    Če programer zruši nad objektom in išče vse lastnosti v istem vrstnem redu, v katerem so bile dodane, se lahko zanese na "naročanje na poseben način", ko so razvrščene celoštevilčne lastnosti in druge so oblikovane v vrstnem redu ustvarjanja javascript-predmeta. Napredne objektne tehnike se ukvarjajo s koncepti, ki se v javascriptingu redko uporabljajo. To je posledica dejstva, da v običajnih situacijah te zmogljive funkcije niso potrebne. Nekatere od teh metod morda ne bododelo v starejših brskalnikih, kot so Netscape prejšnjih izdajah 4. Uporaba prototip se lahko uporablja za ustvarjanje predmetov in javascript-mycircle vse metode, ne le nove. To daje mešano obremenitev delovanja. Ni potrebno, da hranijo ločene kopije metod za vsak primerek objekta, tako da lahko traja manj pomnilnika za delo, ampak za iskanje, bi moral brskalnik iskati trenutna in nadrejena področja. To lahko povzroči največjo zamudo. Značilno je, da mora uporabnik uporablja, kaj je primerno za kodo, ni osnova ta odločitev na uspešnost, razen če se ukvarja z zelo specifično nadzorovanem okolju.
    [palec] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_13.jpeg [/palec]

    vrne true

    Vsaka primerih morda treba nasprotovati lastnost je povezana s predmetom ali nekje v prototipu verige. V javascript vsi objekti uporabljajo metodo hasOwnProperty, ki vrne true, če je lastnost vezana na konkretnem primeru objekta. V tem primeru je mogoče preveriti, ali ima konstruktor objekta isto lastnost z isto vrednostjo kot primerek samega objekta. To lahko pripelje do neveljavnega rezultata, če obstajajo ločene lastnosti objekta javascript z isto vrednostjo za primerek objekta in prototip verige. Metoda hasOwnProperty ima en sam parameter - ime lastnosti v obliki niza.
    [thumb] http://hi-news.pp.ua/uploads/posts/2018-09/obyekti-javascript-prikladi_14.jpeg
    Podobno lahko ustvarite zasebne metode. To je samo funkcija, ki je ustvarjenaznotraj konstruktorske funkcije. Morda se zdi, da nekoga zmede, toda tako deluje. Zasebno funkcijo lahko kliče samo konstruktor ali metode, definirane v vrstici. Uporabijo se lahko kot javne metode, če so dodeljene javnemu konstruktorju in dostopne z uporabo odprtih metod predmetov javascript. funkcija myob () {function cantBeSeen () {alert (secretValue); } lahko privateValue = "; this.method1 = function () {secretValue =" ni presenečenj "; cantBeSeen ();}; ta.method2 = cantBeSeen;} lahko oneOb = new myob (); oneOb.method1 (); //opozorila "brez presenečenj" oneOb.method2 (); //opozorila "brez presenečenj".

    Ukazna predloga

    Objekti ukazov omogočajo ohlapno povezane sisteme, ki delijo tiste, ki izdajajo zahteve, od objektov in dejansko procesov Poizvedba: Te poizvedbe se imenujejo dogodki, koda pa obravnava zahteve, ki jih imenujemo upravljavci dogodkov. Predpostavimo, da izdelate programe, ki podpirajo dejanja posnetka, posnetka in lepljenja odložišča. na primer klik Z desno tipko miške kliknite polje z besedilom ali kombinacijo tipk.Objekti ukaza vam omogočajo, da centralizirate obdelavo teh dejanj, eno za vsako operacijo, ko je potreben le en ukaz za obravnavo vseh zahtev za izrezovanje, en za vse zahteve za kopiranje in eno za vse zahteve za lepljenje. Ker so ekipe centralizirane vse obdelave, so tudi pogosto vključene v obdelavo funkcij preklica za celoten program. Znatne izboljšave je mogoče doseči z uporabo naprednih tehnik javascript, kar omogoča učinkovitejše, zanesljivejše in podprte aplikacije. Če želite izvedeti, kako jelahko uporabite javascript + jQuery predloge. Ta edinstven paket vključuje optimizirano javascript za vse GoF predloge z uporabo naprednejših funkcij, kot so imenski prostori, prototipi, moduli, funkcionalni objekti, zapiranje, anonimne funkcije in drugo. Če uporabniki potrebujejo najnovejše pripomočke in predloge za javascript, predloge jQuery in arhitekturne predloge, je to najboljša možnost. Ta paket vsebuje dragocene, ažurne informacije za razvijalce javascripta. To vključuje:
  • GoF predloge, optimizirane za javascript.
  • Predloge za moderno oblikovanje za javascript.
  • Predloge za oblikovanje modelov.
  • Predloge za oblikovanje jQuery.
  • Arhitekturne predloge javascript-idiomi.
  • Primeri aplikacij (MVC, SPA itd.)
  • Predlagane osnove sintakse javascript predmeta so zelo pomembne za začetnike programerjev. Najprej morate razumeti objekte, potem pa boste vedeli objektno usmerjeno programiranje. Izjemno pomembno je, da globoko razumemo ta material, saj služi kot osnova za preostali jezik javascripta.

    Sorodne publikacije