Mājas lapa » Kodēšana » Objektu orientēta JavaScript (OOJS) 3 veidi, kā izveidot objektu gadījumus

    Objektu orientēta JavaScript (OOJS) 3 veidi, kā izveidot objektu gadījumus

    Kad ir programmēšanas valoda viss par objektiem, pirmā lieta, kas mums jāmācās, ir kā izveidot objektus. Objektu izveide JavaScript ir diezgan vienkārša: pāris cirtaini bikšturi tomēr darīs darbu, tas ir ne vienīgais veids lai izveidotu objektu ne vienīgais veids jums kādreiz būs jāizmanto.

    JavaScript, objektu gadījumi ir izveidots no iebūvētiem objektiem un nāk klajā ar programmu, kad programma darbojas. Piemēram, Datums ir iebūvēts objekts, kas sniedz mums informāciju par datumiem. Ja mēs vēlamies parādīt pašreizējo datumu lapā, mēs nepieciešams runtime instancē Datums kas satur informāciju par pašreizējo datumu.

    JavaScript arī ļauj mums definēt mūsu pašu objektus kas var radīt savus objektu gadījumus runtime. JavaScript, viss ir objekts un katram objektam ir galīgais senčs sauc Objekts. Tiek izsaukts objekta gadījuma izveide aktuācija.

    1. jauns operatoram

    Viena no visbiežāk sastopamajām un pazīstamākajām metodēm, kā izveidot jaunu objektu piemēru, ir izmantojot jauns operatoram.

    Jums ir nepieciešams konstruktors padarīt jauns operatora darbs. Konstruktors ir objekta metode, kas apvieno a jauns objekts. Tā pamata sintakse izskatās šādi:

     jauns konstruktors () 

    Konstruktors var pieņemt argumentus ko var izmantot, lai mainītu vai pievienotu rekvizītus, ko tā konstruē objektu instancē. Konstruktors tam ir tāds pats nosaukums kā objektu, kuram tas pieder.

    Šeit ir piemērs, kā izveidot piemēram Datums() objektu Ar jauns atslēgvārds:

     dt = jauns datums (2017, 0, 1) console.log (dt) // Saule 01.01.2017 00:00:00 GMT + 0100 

    Datums() ir konstruktors, lai izveidotu jaunu Datums objektu. Dažādi objekta konstruktori pieņemt dažādus argumentus lai izveidotu vienādus objektu gadījumus ar dažādi atribūti.

    Ne visi JavaScript iebūvētie objekti var tikt demonstrēti kā Datums. Ir objekti, kas nenāk ar konstruktoru: Matemātika, JSON un Atspoguļojiet, bet viņi joprojām ir parastie objekti.

    Starp iebūvētajiem objektiem, kuriem ir konstruktors (-i), Simbols nevar izsaukt konstruktora stilā lai parādītu jaunu Simbols piemēram. Tas var būt tikai sauc par funkciju kas atgriež jaunu Simbols vērtību.

    Arī starp iebūvētajiem objektiem, kuriem ir konstruktors (-i), ne visi ir vajadzīgi to konstruktori jauns operatoram, lai to varētu izmantot. Funkcija, Array, Kļūda, un RegExp var arī saukt par funkcijām, neizmantojot jauns atslēgvārdu, un tie tiks atjaunināti un atgriezti jaunā objekta instancē.

    2. Atspoguļojiet objektu

    Iespējams, jau ir iepazinušies ar programmētāju programmām Pārdomu API. Pārdomas ir programmēšanas valodu iezīme pārbaudīt un atjaunināt dažas pamatvienības, piemēram, objekti un klases, runtime.

    JavaScript, jūs jau varētu veikt daži pārdomu operācijas, izmantojot Objekts. Bet, a pareiza Reflection API beidzot atnāca arī JavaScript.

    The Atspoguļojiet objektam ir virkne metožu izveidot un atjaunināt objekta gadījumus. The Atspoguļojiet objektu nav konstruktora, tāpēc to nevar iztulkot ar jauns operatoram, un, tāpat kā Matemātika un JSON, to nevar saukt par funkciju arī.

    Tomēr, Atspoguļojiet ir ekvivalents jauns operatoram: Reflect.construct () metodi.

     Reflect.construct (mērķa, argumentiList [, newTarget]) 

    Gan mērķi un izvēles jaunais mērķis argumenti objekti, kuriem ir savi konstruktori, kamēr argumentiList ir argumentu saraksts jānodod mērķi.

     var dt = Reflect.construct (Datums, [2017, 0, 1]); console.log (dt); // Saule 01.01.2017. 00:00:00 GMT + 0100 

    Iepriekš minētais kods tam ir tāda pati ietekme kā tūlītēju Datums() izmantojot jauns operatoram. Lai gan jūs joprojām varat izmantot jauns, Pārdomas ir ECMAScript 6 standarts. Tas arī ļauj jums izmantot jaunais mērķis arguments, kas ir vēl viena priekšrocība salīdzinājumā ar jauns operatoram.

    Vērtība jaunais mērķisprototips (precīzi tas ir. \ t jaunais mērķiskonstruktors) kļūst par jaunizveidotā gadījuma prototipu.

    Prototips ir Objekta īpašums, kuru vērtība ir arī objekts, sākotnējā objekta īpašības. Īsāk sakot, objekts iegūst tās locekļus no tā prototipa.

    Šeit redzēsim piemēru:

     A klase constructor () this.message = funkcija () console.log ('ziņa no A') klase B konstruktors ()  ziņojums () console.log ('ziņojums no B')  data () console.log ('dati no B') obj = Reflect.construct (A, [], B) console.log (obj.message ()); // ziņojums no A console.log (obj.data ()); // dati no B console.log (obj instanceof B) // true 

    Ar iet B kā trešo argumentu Reflect.construct (), prototipa vērtība. \ t obj objekts ir vienādi kā prototips Bkonstruktors (kam piemīt īpašības) ziņu un datus).

    Tādējādi, obj var piekļūt ziņu un datus, prototips. Bet kopš tā laika obj tiek izgatavots, izmantojot A, tai ir arī savs ziņu to saņemts no A.

    Pat ja obj ir veidots kā masīvs, tas ir ne Array, jo tā prototips ir iestatīts uz Objekts.

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

    Reflect.construct () var būt noderīga, ja vēlaties izveidot objektu izmantojot vairāk nekā vienu projektu.

    3. Object.create () metodi

    Varat arī izveidot a jauns parasts objekts ar īpašu prototipu caur Object.create (). Arī tas varētu būt ļoti līdzīgs lietojumam jauns operatoram, bet tā nav.

     Object.create (O [, propertiesObject]) 

    The O arguments ir objekts kalpo prototipam jaunajam objektam, kas tiks izveidots. Izvēles īpašībasObject arguments ir a īpašību saraksts jūs varat pievienot jaunajam objektam.

     A klases konstruktors ()  ziņojums () console.log ('ziņojums no A') var obj = Object.create (jauns A (), data: rakstāms: taisnība, konfigurējams: patiess, vērtība: function () return 'dati no obj') console.log (obj.message ()) // ziņojums no A console.log (obj.data ()) // dati no obj obj1 = Object.create ( jauns A (), foo: rakstāms: true, konfigurējams: true, vērtība: funkcija () return 'foo no obj1') console.log (obj1.message ()) // ziņojums no A konsoles. log (obj1.foo ()) // foo no obj1 

    Iekš obj objekts, pievienots īpašums datus, kamēr atrodaties obj1, tas ir foo. Tātad, kā jūs redzat, mums var būt īpašībām un metodēm, kas pievienotas jaunam objektam.

    Tas ir lieliski, ja vēlaties izveidot vairāki vienāda veida objekti bet ar atšķirīgas papildu īpašības vai metodes. The Object.create () sintakse saglabā nepatikšanas kodēt visus tos atsevišķi.