Pagina principala » Codificare » Object-Oriented JavaScript (OOJS) 3 modalități de a crea instanțe obiect

    Object-Oriented JavaScript (OOJS) 3 modalități de a crea instanțe obiect

    Când este un limbaj de programare totul despre obiecte, primul lucru pe care trebuie să-l învățăm este cum să creați obiecte. Crearea obiectelor în JavaScript este destul de ușoară: o pereche de bretele curbate va face treaba, cu toate acestea nici singura cale pentru a crea un obiect nici singura cale va trebui vreodată să o utilizați.

    În JavaScript, instanțele de obiecte sunt create din obiecte încorporate și apar la apariția programului. De exemplu, Data este un obiect încorporat care ne oferă informații despre date. Dacă vrem să afișăm data curentă pe o pagină, noi nevoie de o instanță de executare de Data care transporta informații despre data curentă.

    De asemenea, JavaScript ne permite să definesc propriile noastre obiecte care pot produce propriile instanțe de obiecte în timpul rulării. În JavaScript, totul este un obiect și fiecare obiect are un ultim strămoș denumit Obiect. Se numește crearea unei instanțe de obiect instanțierea.

    1. The nou operator

    Una dintre cele mai comune și bine cunoscute metode de a crea o instanță nouă de obiecte este prin folosind nou operator.

    Ai nevoie de constructor pentru a face nou operarea operatorului. Un constructor este o metodă a unui obiect care pune împreună a noua instanță a obiectului respectiv. Sintaxa sa de bază arată astfel:

     constructor nou () 

    Un constructor poate acceptă argumente care pot fi folosite pentru a schimba sau a adăuga proprietăți la instanța de obiect pe care o construiește. Constructorul are același nume ca obiect de care aparține.

    Iată un exemplu de creare a unui exemplul Data() obiect cu nou cuvinte cheie:

     dt = new Data (2017, 0, 1) console.log (dt) // Sun Jan 01 2017 00:00:00 GMT + 0100 

    Data() este constructorul pentru a crea un nou Data obiect. Constructori diferiți pentru un obiect ia argumente diferite pentru a crea aceleași instanțe de obiecte cu atribute variate.

    Nu toate obiectele încorporate în JavaScript pot fi instanțiate ca Data. Există obiecte nu vin cu un constructor: Math, JSON și Reflectați, dar ele sunt încă obiecte obișnuite.

    Printre obiectele încorporate care au constructor (e), Simbol nu pot fi chemați în stilul constructorului să instanțiate un nou Simbol instanță. Poate fi doar numită ca o funcție care returnează un nou Simbol valoare.

    De asemenea, printre obiectele încorporate care au constructor (e), nu toate au nevoie de constructorii lor pentru a fi chemați cu nou operator pentru a fi instanțiată. Funcţie, mulțime, Eroare, și RegExp pot fi numite și funcții, fără a utiliza nou cuvânt cheie și vor instanțiza și returna o instanță nouă de obiect.

    2. The Reflectați obiect

    Programatorii din backend ar putea fi deja familiarizați cu Reflection APIs. Reflecția este o caracteristică a limbajelor de programare inspectați și actualizați unele dintre entitățile de bază, cum ar fi obiectele și clasele, la timpul de execuție.

    În JavaScript, puteți deja să efectuați niste folosind operațiunile de reflexie Obiect. Dar, a API adecvat de reflecție în cele din urmă a venit și în JavaScript.

    Reflectați obiect are un set de metode pentru a creați și actualizați instanțe de obiecte. Reflectați obiect nu are un constructor, deci nu poate fi instanțiată cu nou operator, și, la fel Math și JSON, aceasta nu poate fi numit ca o funcție fie.

    in orice caz, Reflectați are un echivalentul nou operator: Reflect.construct () metodă.

     Reflect.construct (țintă, argumenteList [, newTarget]) 

    Amandoua ţintă și opțional newTarget argumentele sunt obiecte având constructori proprii, in timp ce argumentsList este a liste de argumente să fie transmisă constructorului ţintă.

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

    Codul de mai sus are același efect ca instanțiere Data() folosind nou operator. Deși puteți utiliza în continuare nou, Reflecția este una ECMAScript 6 standard. De asemenea, vă permite să să utilizeze newTarget argument, care este un alt avantaj față de nou operator.

    Valoarea a newTarget(pentru a fi exact, este prototipul lui newTargetconstructorul) devine prototipul noului exemplu creat.

    Un prototip este proprietatea unui obiect, a căror valoare este de asemenea, un obiect, care poartă proprietățile obiectului original. Pe scurt, un obiect își face membrii din prototipul său.

    Aici, să vedem un exemplu:

         console.log ("mesaj de la B"))  date () console.log ('date din B') obj = Reflect.construct (A, [], B) console.log (obj.message ()); // mesaj de la un console.log (obj.data ()); // date de la console.log B (obj instanță B) // true 

    Trecând B ca al treilea argument Reflect.construct (), - valoarea prototipului obj obiect este făcut ca să fie același ca prototip al lui B(care are proprietățile mesaj și date).

    Prin urmare, obj pot accesa mesaj și date, disponibil la prototipul său. Dar de atunci obj se face folosind A, de asemenea, are propriile sale mesaj aceasta primit de la A.

    Chiar dacă obj este construit ca o matrice, este nu o instanță mulțime, deoarece prototipul său este setat la Obiect.

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

    Reflect.construct () poate fi util atunci când doriți să creați un obiect folosind mai mult de un model.

    3. The Object.create () metodă

    Puteți crea, de asemenea, o obiect obișnuit cu un prototip specific prin intermediul Object.create (). Și acest lucru ar putea părea foarte asemănător cu utilizarea nou operator, dar nu este.

     Object.create (O [, proprietățiObject]) 

    O argument este un obiect care servește prototipul pentru obiectul nou care va fi creat. Opțional propertiesObject argumentul este a lista de proprietăți este posibil să doriți să adăugați la noul obiect.

       () var var = Object.create (nou A (), data: writable: true, ())) console.log (obj.message ()) // mesaj din console.log (obj.data ()) // date din obj obj1 = Object.create () () return: foo de la obj1 console.log (obj1.message ()) // mesaj de la O consolă. log (obj1.foo ()) // foo de la obj1 

    În obj obiect, proprietatea adăugată este date, in timp ce in obj1, este foo. Deci, după cum vedeți, putem avea proprietățile și metodele adăugate la un obiect nou.

    Acest lucru este minunat atunci când doriți să creați obiecte multiple de același tip dar cu diferite proprietăți sau metode suplimentare. Object.create () sintaxa salvează problema de a le codifica separat.

    Articolul precedent
    NVIDIA GeFORCE 8600 GTS