În acest articol vom ști cum să lucrăm cu membrii de clasă în clasele ES6, versiunea recentă a standardului JavaScript. Vom învăța cum să creăm și metode și proprietăți statice, deși veți vedea că, în cazul proprietăților, va trebui să fim fără valoare a unor tripe suplimentare.
De fapt, nu este scopul nostru de a introduce Conceptul de static, deoarece este un motiv de studiu în detaliu în articolele anterioare ca explicații privind metodele și atributele statice. Cu toate acestea, vom spune că membrii statici ai claselor din programarea orientată spre obiecte sunt atribute și metode care depind direct de o clasă, în loc de a depinde de un obiect particular. Când depinde de clasă, ele nu sunt asociate cu un obiect, astfel încât aceștia împărtășesc valoarea întregii clase, indiferent de cazurile care au fost create.
Am comentat deja acest lucru cu recent Versiunea JavaScript ES6 Acum avem cursuri, deși nu sunt exact la fel ca în alte limbi mai tradiționale. În cazul static nu există schimbări în acest concept, dar prin faptul că nu este capabil să declare atribute de exemplu, nu putem declara atribute statice. Vom vedea calm, deși înainte de a începe cu metodele statice.
O metodă statică este construită pur și simplu prin indicarea cuvântului „static” înainte de numele metodei care se creează. Restul definiției unei metode statice ar fi aceeași cu definiția unei metode convenționale, cu excepția faptului că au variația „acest” ca de obicei în metode.
În exemplul următor avem O clasă numită „Summario” care are o metodă statică declarată, pentru a adăuga valorile unei matrice.
DIV ID = „48B7128DAC”>
Metoda statică depinde direct de clasă , astfel încât vom folosi propria dvs. clasă pentru a le invoca.
div id = „D309A88890”>
Metodele statice pot servi pentru multe lucruri. Este motivul pentru care acestea sunt uneori folosite ca un sertar de dezastru al utilităților care ar putea avea de-a face cu o clasă. Gândirea obiectelor pe care trebuie să le aveți grijă pentru ceea ce și cum sunt folosite. Exemplul trecut al Sumararray () nu a fost foarte bun din filosofia orientării obiectelor, dar în exemplul următor avem o metodă statică un gând puțin mai bun.
Avem o dată de întâlnire care ne servește să creăm Datează în JavaScript. Este adevărat că JavaScript conține deja o clasă dată, dar are posibilitatea de a crea date și ori și poate că avem nevoie doar de date și dorim o serie de utilități suplimentare care nu sunt incluse în interfața de dată originală.
În exemplul nostru veți observa că avem un constructor, care primește ziua, luna și anul. Cu toate acestea, în practică, de multe ori datele sunt create cu ziua curentă. Deoarece supraîncărcarea metodelor în JavaScript nu există și, prin urmare, nu putem supraîncărca constructorii, am putea realiza din metodele statice pentru a crea o specie de constructor de date fără parametri care returnează o dată obiect inițializată cu ziua curentă.
class Fecha { constructor(dia, mes, ano) { this.dia = dia; this.mes = mes; this.ano = ano; } static hoy() { var fecha = new Date(); var dia = fecha.getDate(); var mes = fecha.getMonth() + 1; var ano = fecha.getFullYear(); return new Fecha(dia, mes, ano); }}
După cum puteți vedea, metoda statică de astăzi () este responsabilă pentru obținerea valorilor curente, luna și an și invocând constructorul cu astfel de date, returnând Obiect care tocmai a fost creat.
Un alt exemplu de metoda statică sau metoda de clasă
Continuăm cu un al doilea exemplu de metodă statică sau metodă de clasă. Acum găsim în cadrul unei clase de coordonate,
class Coordenada { constructor(x, y) { this.x = x; this.y = y; } static coordenadaOrigen() { return new Coordenada(0,0); }}
în codul anterior Aveți un exemplu de metodă statică, numită coordinateorigen (), care se întoarce O nouă instanță a unui obiect al clasei de coordonate, cu albi Xey egal cu zero.
Aceasta este o metodă de clasă, deci va trebui să folosim clasa în sine pentru a accesa acest lucru.
var origen = Coordenada.coordenadaOrigen();
Atributele statice ale ECMAScript 2015
Definiția proprietăților statice sau proprietăți de clasă, nu este la fel de direct ca definiția metodelor statice, deoarece în ES6 puteți nu definesc proprietățile așa cum se face în alte limbi de programare mai tradiționale.
în ECMAScript 2015 (ES6) avem limitarea faptului că nu putem declara atribute în clasă (trebuie să le generăm în constructor sau în metode). Acest lucru se extinde și la atributele de clasă sau la atributele statice. Cu toate acestea, puteți asambla mereu un mecanism pentru ao realiza.
De exemplu, în cazul atributelor de clasă statică care au valori comune întregii clase, am putea folosi getterul, plasând Cuvântul static atunci când definiți metoda de obținere.
class Circulo { static get pi() { return 3.1416 }}
putem accesa „pi” ca și cum ar fi o proprietate statică, dependentă direct de la clasă. Îl folosim direct din numele clasei:
console.log(Circulo.pi);
Dacă ceea ce vrem este o variabilă statică, care este globală pentru întreaga clasă, cu o valoare că nu depinde de cazuri și care poate varia în timp, am putea face ceva de genul:
class Test {} Test.variableStatic = 'Algo que guardo en la clase';
ca JavaScript este atât de permisiv, putem asocia O proprietate a clasei doar atribuind orice valoare. Nu-mi place exemplul prea mult, deoarece definiția proprietății statice ar fi în afara codului clasei în sine și, prin urmare, în citirea acestui cod nu am putut să ne dăm seama că această variabilă statică este ulterior creată.
În exemplul tipic de a crea o variabilă statică care poartă contul cazurilor create dintr-o clasă, am putea opta pentru ceva de genul acesta (ceea ce îmi place mai mult pentru a avea crearea de proprietăți statice în interiorul constructorului).
class Habitante { constructor(nombre) { this.nombre = nombre; if(Habitante.contador) { Habitante.contador++; } else { Habitante.contador = 1; } }}
class Habitante { static get contador() { if(Habitante.contadorPrivado) { return Habitante.contadorPrivado; } return 0; } static set contador(valor) { Habitante.contadorPrivado = valor; } constructor(nombre) { this.nombre = nombre; if(Habitante.contador) { Habitante.contador++; } else { Habitante.contador = 1; } } }
Cum puteți vedea, Locuitorul.Contact este proprietatea noastră statică, care ar fi disponibilă datorită getterului și a setterului ca și cum ar fi un atribut normal (numai că este static deoarece este prezis de la „static”).
in Constructorul pe care îl folosim de locuitor.Contact ca și cum ar fi fost un atribut normal, numai pe plan intern în implementarea clasei Aceste proprietăți sunt de fapt calculate cu funcții de obținere și setare.
este un cod experimental simplu , dar poate da o idee despre lucrurile care se pot face în JavaScript când „ați returnat” un mic limbă. Aflați mai multe despre obținerea și setați în acest articol.
Concluzie privind membrii de clasă în ES6
Am învățat lucruri interesante despre crearea membrilor de clasă sau a membrilor statici, în clasele ES6. După cum ați reușit să vedeți, există unele particularități date de limba JavaScript, care este importantă pentru a ști.
În următorul articol al Manualului ES6 vom continua să vorbim despre clase, adresându-se ceva atât de important ca moștenire a claselor în JavaScript.