Obiect()

Folosind funcția built-in Object () constructor, putem crea obiecte goale generice în zbor. De fapt, dacă vă amintiți din nou la începutul capitolului 1, acesta este exact ceea ce am făcut creând obiectul cody. Să recreăm obiectul Cody.

Mostră: sample69.html

 

Aici, tot ce facem este să folosim Obiect() constructor funcția de a crea un obiect generic numit cody. Vă puteți gândi la Obiect() constructor ca tăietor de cookie pentru a crea obiecte goale care nu au proprietăți sau metode predefinite (cu excepția, desigur, a celor moștenite din lanțul prototip).

În cazul în care nu este evident, Obiect() constructorul este un obiect în sine. Aceasta înseamnă că funcția constructorului se bazează pe un obiect creat din Funcţie constructor. Acest lucru poate fi confuz. Doar amintiți-vă ca și cum mulțime constructor, Obiect Constructorul scuipă pur și simplu obiecte goale. Și da, puteți crea toate obiectele goale pe care le doriți. Cu toate acestea, crearea unui obiect gol precum Cody este foarte diferit de crearea unei funcții de constructor proprii cu proprietăți predefinite. Asigurați-vă că înțelegeți că cody este doar un obiect gol bazat pe Obiect() constructor. Pentru a valorifica cu adevărat puterea JavaScript, va trebui să învățați nu numai cum să creați containere goale de obiecte Obiect(), dar și cum să vă construiți propria "clasă" de obiecte (Persoană()) ca Obiect() constructor funcția în sine.


Obiect() Parametrii

Obiect() funcția constructorului ia un parametru opțional. Parametrul este valoarea pe care doriți să o creați. Dacă nu furnizați niciun parametru, atunci a nul sau nedefinit valoarea va fi asumată.

Mostră: sample70.html

 

Dacă există o valoare suplimentară nul sau nedefinit este trecut la Obiect constructor, valoarea trecută va fi creată ca un obiect. Deci, teoretic, putem folosi Obiect() constructor pentru a crea oricare dintre celelalte obiecte native care au un constructor. În exemplul următor, fac doar asta.

Mostră: sample71.html

 

Obiect() Proprietăți și metode

Obiect() Obiectul are următoarele proprietăți (fără a include proprietățile și metodele moștenite):

Proprietăți (Object.prototype;):

  • prototip

Obiect() Proprietățile și metodele instanței

Obiect() obiectele obiect au următoarele proprietăți și metode (nu include proprietățile și metodele moștenite):

Proprietăți de instanță (var myObject = ; myObject.constructor;):

  • constructor

Metode de instanță (var myObject = ; myObject.toString ();):

  • hasOwnProperty ()
  • isPrototypeOf ()
  • propertyIsEnumerable ()
  • toLocaleString ()
  • toString ()
  • valoarea()

Lanțul prototip se termină cu Object.prototype, și astfel toate proprietățile și metodele Obiect() sunt moștenite de toate obiectele JavaScript.


Crearea de Obiect() Obiectele care utilizează "Literali de obiecte"

Crearea unui "obiect literal" presupune instantierea unui obiect cu sau fara proprietati folosind bretele (var cody = ;). Amintiți-vă la începutul capitolului 1 când am creat obiectul cody unic și apoi am dat proprietățile obiectului cody folosind notația punctului? Să facem din nou asta.

Mostră: sample72.html

 

Observați în codul care creează cody obiect și proprietățile sale au luat cinci declarații. Folosind notația literală a obiectului putem exprima același lucru cody obiecte într-o declarație.

Mostră: sample73.html

  

Folosind notația literală ne dă posibilitatea de a crea obiecte, inclusiv proprietăți definite, cu un număr mai mic de coduri și de a încapsula vizual datele corelate. Observați utilizarea : și , operatorii într-o singură declarație. Aceasta este, de fapt, sintaxa preferată pentru crearea obiectelor în JavaScript din cauza terseness și lizibilitatea.

Ar trebui să știți că numele proprietăților pot fi specificate și ca șiruri de caractere:

Mostră: sample74.html

  

Nu este necesar să specificați proprietățile ca șiruri de caractere, cu excepția cazului în care numele proprietății:

  • Este unul dintre cuvintele cheie rezervate (clasă).
  • Conține spații sau caractere speciale (orice altceva decât numere, litere, semnul dolarului ($) sau caracterul de subliniere (_)).
  • Începe cu un număr.

Atent! Ultima proprietate a unui obiect nu trebuie să aibă o virgulă care să se situeze. Aceasta va cauza o eroare în unele medii JavaScript.


Toate obiectele moștenite de la Object.prototype

Obiect() constructor funcția în JavaScript este special, ca ei prototip proprietatea este ultima oprire din lanțul prototip.

În următorul eșantion, măresc numărul Object.prototype cu foo proprietate și apoi să creeze un șir și să încerce să acceseze foo proprietate ca și cum ar fi fost o proprietate a instanței de șir. Din moment ce myString instanta nu are a foo proprietatea, lanțul prototip lansează și valoarea este căutată String.prototype. Nu este acolo, așa că următorul loc să arătați este Object.prototype, care este locația finală JavaScript va căuta o valoare a obiectului. foo valoarea este găsită pentru că am adăugat-o, deci returnează valoarea lui foo.

Mostră: sample75.html

  

Concluzie

Atent! Orice adăugat la Object.prototype va apărea într-o pentru in buclă și lanțul prototip. Din acest motiv, sa spus că se schimba Object.prototype este interzis.

Cod