Am vrut să replice mai mult sau mai puțin o metodă variabilă sau statică de Java
Nu încercați să programați într-o limbă ca și cum ar fi fost altul, în schimb, învățați cum funcționează noile limbi și vă continuă linia. De ce doriți să utilizați JavaScript pentru a arăta ca Java? Doar nu o faceți.
Conceptul de proprietate sau metodă statică în Java înseamnă că această proprietate sau metodă nu depind de o instanță, dacă nu, din aceeași clasă. Ce înțelegi despre asta? Ei bine, este un complex de biți, în Java există așa-numitele încărcătoare de clasă care sunt responsabile pentru încărcarea claselor și înregistrarea atunci când JVM se ridică. Dacă definiți o proprietate sau o metodă statică, acest lucru este încărcat, acest lucru nu se întâmplă cu variabilele și metodele de instanță, deoarece numai semnătura dvs. este încărcată.
DIV id = „7A5CE8C2D6″>
În JavaScript nu există în clase
De fapt, gândirea că aceasta este falsă deoarece în ES6 a apărut class
, dar acest lucru nu funcționează ca noii oameni cred. Deși credeți „clase” cu class
creezi funcții cu prototipul dvs. respectiv. Aceasta este doar sintaxa, nu are nici un impact.
Cu toate acestea, puteți emula variabile și metode statice ** prin Object.defineProperty
:
function User () { }Object.defineProperty(User, 'age', { enumerable: true, configurable: true, writable: true, value: 23});Object.defineProperty(User, 'getInfo', { enumerable: true, configurable: true, writable: true, value: function () { return 'Hola, tengo ' + User.age + ' años'; }});console.log(User.getInfo());
Cum puteți vedea, acum age
și getInfo
sunt aderat la funcția User
.
ar fi cel mai apropiat lucru de Java , Adevărat? Nu am nevoie să creez o instanță și metoda nu ar fi inhalată, dreapta?
ceea ce faci este numit funcția din fabrică și este destul de folosit pentru a crea Obiectele au proprietăți private și de a folosi agregarea în loc de moștenire. Dar, în realitate, nu există prea multă diferență, diferența este că a folosit o funcție de constructor (
new
) Adăugați un context (this
) la Instanța, din aceasta, ambele creează obiecte.function CreateBall (props) { let stub = { color, weight } = props; return { color: stub.color, weight: stub.weight, changeColor (color) { stub.color = color; }, changeWeight (weight) { stub.weight = weight; }, info () { console.log(stub.color, stub.weight); } };}const myBall = new CreateBall({ color: 'blue', weight: 5});// encapsulamientomyBall.color = 'red';myBall.weight = 7;myBall.info();myBall.changeColor('red');myBall.changeWeight(7);myBall.info();
div id = „7A5CCE8C2D6″>