JavaScript siūlo daugybę galimybių objektų kūrimui ir manipulavimui. Tradicinis klasų ir prototipų naudojimas yra plačiai paplitęs, tačiau taip pat yra ir alternatyvių požiūrių, kurie dažnai yra lankstesni ir paprastesni. Šiame vadove sužinosi, kaip sukurti efektyvius objektus JavaScript be klasės naudojimo. Naudosime Douglas Crockford metodą, kuris remiasi funkciniu objektų kūrimu ir pateikia įdomią perspektyvą apie Es6 ir vėlesnes versijas.
Svarbiausi pastebėjimai
- Objektai gali būti kuriami nepasinaudojant klasėmis ir this
- Funkciniu pagrindu sukurti objektai leidžia lankstesnę ir skaitomesnę kodo struktūrą
- Destruktūrizuojant objektus, valdymas tampa efektyvesnis ir paprastesnis
Žingsnis po žingsnio vadovas kaip sukurti objektus be klasių
Pradėk sukurti funkciją, kuri grąžina objektą. Tai gali padaryti naudodamas pagrindinę funkcijų sintaksę.

Šiame pavyzdyje apibrėšime createShape funkciją. Šioje funkcijoje sukursime naują objektą, turintį įvairių savybių, tokių kaip id, x ir y. Taip pat gali pridėti papildomas metodikas, kad išplėstum objekto funkcionalumą.
Įsitikink, kad perduodi parametrus, kurie apibrėžia objektą, funkcijai. Tai leis sukurti objekto instanciją su specifiniais atributais.
Norėdamas naudoti objektą naudinga, gali taip pat apibrėžti metodus, integruotus į objektą. Pavyzdžiui, gali pridėti print metodą, kuris išves objekto savybes.

Čia išplėsi createShape funkciją su print metodu. Įsitikink, kad metodas yra tinkamai įgyvendintas, kad galėtų referuoti objekto savybes.
Dar vienas elementas yra move metodo įgyvendinimas. Šis metodas gali būti naudojamas x ir y objekto koordinačių keitimui. Nepamiršk suteikti parametrams aiškius pavadinimus, kad išvengtum nesusipratimų.
Tai gali būti naudojamos funkcijos objekto destruktūrizavimui. Vietoj to, kad perduotum parametrus po vieną, tiesiog perduok objektą ir naudok destruktūrizavimą, kad išgautum savybes.
Ši technika ne tik padaro tavo kodą skaitomesnį, bet ir lankstesnį. Gali lengvai pridėti naujus parametrus ir dalinai pašalinti esamus parametrus, nesugadindamas visos funkcionalumo struktūros.
Jei galvoji integruoti ir kitas funkcijas, galėtum apibrėžti antrą funkciją createBaseShape, kuri įgyvendintų kelis bazinius elgesius ir būtų kviečiama iš pirmo objekto.
Screenshot_目330
Naudodamasis tolesniu požiūriu, gali pasiekti ir printBase arba kitas funkcijas ir jas naudoti be this ar panašiai.
Kaip paskutinį patobulinimą gali užšaldyti objektą, kad užtikrintum, jog jo savybės po sukūrimo negali būti keičiamos. Tai įgyvendinama naudojant Object.freeze() metodą.
Šios technikos parodo, kad yra daug galimybių, kaip kurti ir valdyti objektus JavaScript, nereikalaujant grįžti prie klasės modelio.
Santrauka – Objektai be klasių JavaScript
Šiame vadove sužinojai, kaip efektyviai kurti objektus JavaScript be klasių. Funkciniu principu pagrįstas objektų kūrimas suteikia daug lankstumo ir kontrolės. Pasitelkiant įvairių metodų, tokių kaip destruktūrizavimas ir Object.freeze, turi galimybę plėtoti tvirtas ir palaikomas struktūras, kurios naudingos tavo kodui.
Dažnai užduodami klausimai
Kaip sukurti objektą JavaScript be klasių?Galite apibrėžti funkciją, kuri sukuria ir grąžina naują objektą.
Kokie yra funkcionalumą pagrįsto objektų kūrimo privalumai?Jis leidžia lankstesnį objektų valdymą, lengvą plėtrą per destruktūrizavimą ir užkerta kelią nepageidaujamoms modifikacijoms naudojant Object.freeze.
Ar galiu apibrėžti metodus objekto kūrimo funkcijose?Taip, galite tiesiogiai sukurti metodus objekto grąžinimo funkcijoje.
Ar šis požiūris visiškai pakeičia tradicinį klasių modelį?Tai alternatyvi metodika, kuri daugeliu specifinių atvejų gali būti naudingesnė, tačiau nesiekia visiškai pakeisti klasių.