Mulți dintre prietenii mei sunt dezvoltatori C # sau C ++. Ei sunt obișnuiți să folosească moștenirea în proiectele lor și atunci când doresc să învețe sau să descopere JavaScript, una dintre primele întrebări pe care le pun este: "Dar cum pot face moștenirea cu JavaScript?"
De fapt, JavaScript utilizează o abordare diferită de C # sau C ++ pentru a crea un limbaj orientat pe obiecte. Este un prototip bazat pe limba. Conceptul de prototipare implică faptul că comportamentul poate fi refolosit prin clonare existent obiecte care servesc drept prototipuri. Fiecare obiect din JavaScript depinde de un prototip care definește un set de funcții și membri pe care le poate utiliza obiectul. Nu există obiecte de clasă. Fiecare obiect poate fi apoi folosit ca prototip pentru un alt obiect.
Acest concept este extrem de flexibil și îl putem folosi pentru a simula niște concepte de la OOP, cum ar fi moștenirea.
Să ne uităm la ceea ce dorim să creăm cu această ierarhie folosind JavaScript:
Mai întâi de toate, putem crea Clasa a
uşor. Deoarece nu există clase explicite, putem defini un set de comportament (clasa A astfel ...) doar prin crearea unei funcții ca aceasta:
var ClassA = funcția () this.name = "clasa A";
Această "clasă" poate fi instanțiată utilizând nou
cuvinte cheie:
var a = clasa nouă (); ClassA.prototype.print = funcția () console.log (this.name);
Și să o folosim folosind obiectul nostru:
a.print ();
Destul de simplu, corect?
Eșantionul complet are doar opt linii:
var ClassA = funcția () this.name = "clasa A"; ClassA.prototype.print = funcția () console.log (this.name); var a = clasa nouă (); a.print ();
Acum, să adăugăm un instrument pentru a crea "moștenire" între clase. Acest instrument va trebui doar să facă un singur lucru: clona prototipul.
var moșteniteFrom = funcție (copil, părinte) child.prototype = Object.create (parent.prototype); ;
Acesta este exact locul unde se petrece magia! Prin clonarea prototipului, transferăm toți membrii și funcțiile noii clase.
Deci, dacă vrem să adăugăm o clasă a doua care va fi copilul primului, trebuie să folosim acest cod:
var ClassB = funcția () this.name = "clasa B"; this.name = "Eu sunt copilul"; moșteniFrom (ClasaB, ClasaA);
Atunci pentru că ClassB
a moștenit imprimare
funcția de la Clasa a
, codul următor funcționează:
var b = clasa nouă (); b.print ();
Și produce următoarea ieșire:
clasa B
Putem chiar suprascrie imprimare
funcția pentru ClassB
:
ClassB.prototype.print = funcția () ClassA.prototype.print.call (aceasta); console.log (this.surname);
În acest caz, producția produsă va arăta astfel:
clasa B Sunt copilul
Trucul aici este de a suna ClassA.prototype
pentru a obține baza imprimare
funcţie. Apoi mulțumită apel
funcția de bază poate fi apelată pe obiectul curent (acest
).
Crearea de ClassC
este acum evident:
var ClassC = funcția () this.name = "clasa C"; this.name = "Eu sunt nepotul"; moșteniFrom (ClassC, ClassB); ClassC.prototype.foo = function () // Faceti cateva lucruri funky aici ... ClassC.prototype.print = function () ClassB.prototype.print.call (this); console.log ("Sună ca acesta funcționează!"); var c = clasa nouă (); c.print ();
Ieșirea este:
clasa C Sunt nepotul Suna ca asta functioneaza!
S-ar putea să vă surprindă puțin, dar Microsoft are o grămadă de învățare gratuită pe multe subiecte JavaScript open source și suntem într-o misiune de a crea mult mai mult cu Microsoft Edge. Check out-ul meu:
Sau seria de învățare a echipei noastre:
Și câteva instrumente gratuite: Visual Studio Community, Azure Trial și instrumente de testare cross-browser pentru Mac, Linux sau Windows.
În concluzie, vreau doar să menționez în mod clar că JavaScript nu este C # sau C ++. Are propriile sale filozofie. Dacă sunteți un dezvoltator C ++ sau C # și doriți cu adevărat să îmbrățișați puterea completă a JavaScript, cel mai bun sfat pe care îl pot oferi este: Nu încercați să replicați limba în JavaScript. Nu există limba cea mai bună sau cea mai proastă. Filosofii diferite!
Acest articol face parte din seriile de tehnologie web dev din Microsoft. Suntem încântați să împărtășim Microsoft Edge și noul EdgeHTML motor de randare cu tine. Obțineți mașini virtuale gratuite sau testați de la distanță pe dispozitivele Mac, iOS, Android sau Windows @ http://dev.modern.ie/.
Aflați JavaScript: Ghidul complet
Am creat un ghid complet care vă ajută să învățați JavaScript, indiferent dacă începeți doar ca dezvoltator web sau doriți să explorați subiecte mai avansate.