Daniel Ehrenberg
Etapa 3
Pastrarea statului si a comportamentului in confidentialitate pentru o clasa permite autorilor bibliotecii sa prezinte o interfata clara si stabila, in timp ce isi schimba codul in timp din culise. Propunerea de campuri de clasa ofera campuri private pentru clase si instante, iar aceasta propunere se bazeaza pe aceasta adaugand metode private si accesori (getter / setatori) la JavaScript. Cu aceasta propunere, orice element de clasa poate fi privat.
Pentru discutii despre detalii semantice, consultati DETALII.md. Acest document se concentreaza mai mult pe experienta si intuitia utilizatorului final.
Un exemplu de indrumare: elemente personalizate cu clase
Pentru a defini un widget de contor care creste atunci cand faceti clic, puteti defini urmatoarele cu ES2015:
Declaratii de teren
Cu propunerea campurilor clasei, exemplul de mai sus poate fi scris ca
yola berrocal follando your porn
sexogratis videos de zofilia gratis
videos incesto online trio bisex
penes negros porno español jovencitas
comiendo polla mi madre me folla
videos travestis en español descargar pelis pornos
jovencitasxxx matrimonios follando
pornotrans follando en español
descargar peliculas porno completas follada en la playa
colegialas anal porno online gratis
maduras sensuales gitanas follando
vecinasxxx videos xxx gratis español
videos chicas gratis porno estremo
porno gay chino video famosas desnudas
follándosela videos sexo español
porno hablado español videos pornos caseros reales
hermanos rusos follando sexo videos gratis
natalia sanchez desnuda follada a traicion
tetonas en la playa chantaje y lujuria
trio en la playa abuelas incestos
bind (this); } connectedCallback () {this.render (); } render () {this.textContent = this.x.toString (); }} window.customElements.define (‘num-counter’, Counter);
In exemplul de mai sus, puteti vedea un camp declarat cu sintaxa x = 0. De asemenea, puteti declara un camp fara initializator ca x. Prin declararea campurilor in avans, definitiile clasei devin mai autodocumentate; instantele trec prin mai putine tranzitii de stat, deoarece campurile declarate sunt intotdeauna prezente.
Metode si campuri private
Exemplul de mai sus are cateva detalii de implementare expuse lumii care ar putea fi mai bine pastrate intern. Utilizand campuri si metode private ESnext, definitia poate fi rafinata la:
Pentru a face metode, getter / setere sau campuri private, pur si simplu dati-le un nume incepand cu #.
Cu toata implementarea sa pastrata interna clasei, acest element personalizat poate prezenta o interfata care este practic la fel ca un element HTML incorporat. Utilizatorii elementului personalizat nu au puterea de a se amesteca cu niciunul dintre elementele sale interne.
Retineti ca aceasta propunere ofera campuri si metode private doar asa cum au fost declarate in avans intr-o declaratie de camp; campurile private nu pot fi create ulterior, ad-hoc, prin atribuirea lor, asa cum pot proprietatile normale. De asemenea, nu puteti declara campuri sau metode private in literele obiectului; de exemplu, daca va implementati clasa pe baza literelor obiectului, sau adaugand metode individuale la prototip sau utilizand un cadru de clasa, nu puteti utiliza metode private, campuri sau accesori.
Relatia cu alte propuneri
Decoratorii nu fac parte din aceasta propunere, dar sunt concepute pentru a le permite decoratorilor sa lucreze deasupra ei. Vedeti caracteristicile claselor unificate pentru o explicatie a modului in care ar functiona impreuna.
Aceasta propunere adauga doar metode de instanta private , omitand metodele statice private, care sunt luate in considerare in propunerea de caracteristici de clasa statica.
stare
Consens in TC39
Aceasta propunere a ajuns la etapa a 3-a in septembrie 2017. De atunci, au existat o gandire extinsa si discutii indelungate cu privire la diferite alternative, inclusiv:
- Clasele JS 1.1
- Reconsiderarea „privatului static”
- Utilizarea suplimentara a cuvantului cheie privat
- Simboluri private
La examinarea fiecarei propuneri, delegatii TC39 au analizat profund motivatia, feedback-ul dezvoltatorilor JS si implicatiile asupra viitorului proiectarii limbajului. In cele din urma, acest proces de gandire si implicarea continua a comunitatii au condus la un consens reinnoit cu privire la propunerea din acest depozit. Pe baza acestui consens, implementarile merg mai departe cu privire la aceasta propunere.
Implementari
Mai multe implementari sunt in curs de dezvoltare:
- Babel de Tim McClure
- Metode private adaugate in v7.2.0
- Accesorii privati (adaugati in V7.3.0)
- In curs in TypeScript de Bloomberg
- Suport suplimentar pentru scule
- Livrare in V8
- SA:
- Metode private – complete si in curs de examinare.
- Accesorii privati – completa si in curs de examinare.
- Moddable XS – implementare completa.
- QuickJS – implementare completa.
Activitate binevenita in acest depozit
Sunteti incurajati sa inregistrati probleme si PR-uri in acest depozit
- Puneti intrebari despre propunere, cum functioneaza sintaxa, ce inseamna semantica etc.
- Propuneti si discutati mici modificari sintactice sau semantice, in special cele motivate de experienta implementarii sau utilizarii propunerii.
- Elaborati documentatie imbunatatita, cod de esantion si alte modalitati de a introduce programatori la toate nivelurile in aceasta caracteristica.
Daca aveti idei suplimentare despre cum sa imbunatatiti JavaScript, consultati CONTRIBUTING.md a ecma262 pentru a va implica.








