Pagrindinis » Kodavimas » Objektinis „JavaScript“ (OOJS) 3 būdai sukurti objektų situacijas

    Objektinis „JavaScript“ (OOJS) 3 būdai sukurti objektų situacijas

    Kai yra programavimo kalba viskas apie objektus, pirmas dalykas, kurį turime išmokti, yra kaip sukurti objektus. „Google“ objektų kūrimas yra gana paprastas: pora garbanotųjų petnešų tai atliks darbą nei vienintelis būdas sukurti objektą nei vienintelis būdas jums reikės naudoti.

    „JavaScript“ objekto egzemplioriai yra sukurtas iš įmontuotų objektų ir atsiranda, kai programa veikia. Pavyzdžiui, Data yra integruotas objektas, suteikiantis mums informaciją apie datas. Jei norime parodyti dabartinę datą puslapyje, mes reikia runtime instancijos Data kuri pateikia informaciją apie dabartinę datą.

    „JavaScript“ taip pat leidžia mums apibrėžti savo pačių objektus kurie gali sukurti savo objektų egzempliorius vykdymo metu. „JavaScript“, viskas yra objektas ir kiekvienas objektas turi galutinis protėvis vadinamas Objektas. Objekto pavyzdžio kūrimas vadinamas demonstravimas.

    1. naujas operatorius

    Vienas iš labiausiai paplitusių ir gerai žinomų būdų sukurti naują objekto pavyzdį yra naudojant naujas operatorius.

    Jums reikia a konstruktorius padaryti naujas operatorius. Konstruktorius yra objekto metodas, kuris sujungia a naują šio objekto egzempliorių. Jos pagrindinė sintaksė atrodo taip:

     naujas konstruktorius () 

    Konstruktorius gali priimti argumentus kuris gali būti naudojamas keisti ar pridėti savybių, kurias jis sukonstruoja. Konstruktorius turi tą patį pavadinimą kaip objektas, kuriam jis priklauso.

    Štai pavyzdys, kaip sukurti pavyzdys Data() objektą su naujas raktinis žodis:

     dt = nauja data (2017, 0, 1) console.log (dt) // Sa. sausis 01 2017 00:00:00 GMT + 0100 

    Data() yra konstruktorius sukurti naują Data objektą. Įvairūs objekto konstruktoriai priimti skirtingus argumentus sukurti tokio paties tipo objekto egzempliorius įvairūs atributai.

    Ne visi „JavaScript“ integruoti objektai gali būti ištekliai panašūs Data. Yra objektų ne ateiti su konstruktoriumi: Matematika, JSON ir Atspindi, bet jie vis dar yra paprasti objektai.

    Tarp įmontuotų objektų, turinčių konstruktorių (-us), Simbolis negali būti vadinamas konstruktoriaus stiliaus atnaujinti naują Simbolis instancija. Tai gali būti tik vadinama funkcija kuris grąžina naują Simbolis vertė.

    Be to, tarp įmontuotų objektų, turinčių konstruktorių (-ų), ne visi turi turėti savo konstruktorių naujas operatorius. Funkcija, Array, Klaida, ir RegExp taip pat gali būti vadinamos funkcijomis, nenaudojant naujas raktinis žodis, ir jie atgaivins ir grąžins naują objekto pavyzdį.

    2. Atspindi objektą

    Programinės įrangos programuotojai gali būti jau susipažinę Refleksijos API. Atspindėjimas yra programavimo kalbų bruožas tikrinti ir atnaujinti kai kuriuos pagrindinius subjektus, pavyzdžiui, objektai ir klasės, vykdymo metu.

    „JavaScript“ sistemoje jau galite atlikti kai kurie refleksijos operacijos naudojant Objektas. Bet, a tinkamas atspindėjimo API galiausiai atsirado ir „JavaScript“.

    The Atspindi objektas turi metodų rinkinį kurti ir atnaujinti objekto atvejus. The Atspindi objektą neturi konstruktoriaus, todėl jis negali būti suaktyvintas su naujas operatorius, ir, kaip ir Matematika ir JSON, ji negali būti vadinama funkcija taip pat.

    Tačiau, Atspindi turi ekvivalentas naujas operatorius: Reflect.construct () metodas.

     Reflect.construct (taikinys, argumentaiList [, newTarget]) 

    Tiek tikslą ir neprivaloma naujasTikslinis argumentai objektai, turintys savo konstruktorius, kol argumentaiList yra argumentų sąrašas būti perduodamas tikslą.

     var dt = Reflect.construct (Data, [2017, 0, 1]); console.log (dt); // Sausis 01 2017 2017 00:00:00 GMT + 0100 

    Aukščiau nurodytas kodas turi tą patį poveikį kaip momentiniuoti Data() naudojant naujas operatorius. Nors vis tiek galite naudoti naujas, Refleksija yra ECMAScript 6 standartas. Jis taip pat leidžia jums pasinaudoti naujasTikslinis argumentas, kuris yra dar vienas pranašumas prieš naujas operatorius.

    Vertė naujasTikslinisprototipas (būtent tai prototipas). \ t naujasTiksliniskonstruktorius) tampa naujai sukurtos instancijos prototipu.

    Prototipas yra Objekto nuosavybė, kurių vertė yra taip pat objektas, pirminio objekto savybes. Trumpai tariant, objektas gauna savo narius iš prototipo.

    Čia pamatysime pavyzdį:

     A klasė constructor () this.message = funkcija () console.log („pranešimas iš A“) B klasė constructor ()  pranešimas () console.log („pranešimas iš B“)  data () console.log („duomenys iš B ') obj = Reflect.construct (A, [], B) console.log (obj.message ()); // pranešimas iš A console.log (obj.data ()); // duomenys iš B console.log (obj instanceof B) // true 

    Perduodami B kaip trečiasis argumentas Reflect.construct (), prototipo vertė. \ t obj objektas yra padaryti tą patį kaip prototipas Bkonstruktorius (turintis savybes) pranešimą ir duomenis).

    Taigi, obj gali pasiekti pranešimą ir duomenis, prototipą. Bet nuo to laiko obj yra pagamintas naudojant A, ji taip pat turi savo pranešimą ji gautas nuo A.

    Nors obj yra sukurtas kaip masyvas ne Array, kadangi jo prototipas yra nustatytas Objektas.

     obj = Reflect.construct (Array, [1,2,3], Object) console.log (obj) // Array [1, 2, 3] console.log (obj instanceof Array) // false 

    Reflect.construct () gali būti naudinga, kai norite sukurti objektą naudojant daugiau nei vieną projektą.

    3. Object.create () metodas

    Taip pat galite sukurti a naujas paprastas objektas su konkrečiu prototipu per Object.create (). Tai taip pat gali atrodyti labai panaši į naujas operatorius, bet ne.

     Object.create (O [, propertiesObject]) 

    The O argumentas yra objektas tarnauja prototipui naujam objektui, kuris bus sukurtas. Neprivaloma savybėsObject argumentas yra a savybių sąrašas galbūt norėsite pridėti naują objektą.

     A klasė constructor ()  message () console.log („pranešimas iš A“) var obj = Object.create (naujas A (), data: rašoma: tiesa, konfigūruojama: tiesa, vertė: function () return 'data from obj') console.log (obj.message ()) // žinutė iš A console.log (obj.data ()) // duomenys iš obj obj1 = Object.create ( naujas A (), foo: writeable: true, configurable: true, reikšmė: funkcija () return 'foo iš obj1') console.log (obj1.message ()) // pranešimas iš A konsolės. žurnalas (obj1.foo ()) // foo iš obj1 

    Viduje konors obj objektas, pridėtas turtas yra duomenis, o obj1, tai yra foo. Taigi, kaip matote, mes galime turėti ypatybės ir metodai, įtraukti į naują objektą.

    Tai puiku, kai norite sukurti daugelio tos pačios rūšies objektų bet su skirtingų papildomų savybių ar metodų. The Object.create () sintaksė taupo visas jų kodavimo problemas.