ecmascript 6 magt tutor: klasse og arv

, ecmascript 6 magt tutor: klasse og arv,,,,, 315,,,,,,,, 28,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet ecmascript 6 magt tutorial.ecmascript 6 magt tutor: model tråde, sponsoreret indhold, denne støttes efter træk et produkt af relevans for vores læsere, mens vores leder, retningslinjer for at være objektive og uddannelsesmæssige.,, jeg gerne ville dele med dig en række artikler om ecmascript 6, deler min begejstring for det og forklare, hvordan det kan arbejde for dig.jeg håber, du nyder at læse dem så meget, som jeg har skrevet dem.,, for det første vil jeg arbejde i microsoft på browser gøre motor for microsoft - kant, som er en stor forbedring i forhold til de internet explorer motor, skal vi ved (og kærlighed?i årenes løb.min personlige favorit træk ved det er, at det støtter en masse ecmascript 6.for mig er det en enorm fordel i form af store ansøgninger om   web., har vi nu næsten 70% af ecmascript 6 træk i microsoft kant så langt, i henhold til http://kangax.github.io/compat-table/es6/og es6 på dev.modern. ie /platform /status.,,,,, jeg elsker javascript, men når det kommer til at arbejde på store projekter, som f.eks. babylon.js, jeg foretrækker skrivemaskine, som nu er til vinkel - 2   forresten.grunden er, at javascript (også kendt som ecmascript 5) ikke har alle de elementer, jeg er vant til syntaks fra andre sprog, jeg skriver store projekter.jeg pjækker og arv, f.eks.,, så uden yderligere postyr, lad os komme ind i det:,, 1.at skabe en klasse, javascript er en prototype brugerorienteret sprog, og det er muligt at simulere klasser og arv, ecmascript 5.,, fleksible funktioner i javascript giver os mulighed for at simulere indkapsling, vi er vant til, når man beskæftiger sig med klasser.det, vi har brug for, er at udvide prototype af en genstand:,, var dyr = (funktion () (funktion dyr (navn) (this.name = navn} //- metoder animal.prototype.dosomething = funktion () (konsol. log ("jeg" +. navn);}; tilbage dyr}) () var løven = nye dyr ("lion"); løve. dosomething();, kan vi se, at vi har fastlagt en "klasse" med "egenskaber," og ", metoder,.,, konstruktøren er defineret af funktion selv (funktion, dyr), hvor vi kan instantiate egenskaber.ved hjælp af prototypen, vi kan definere funktioner, der vil blive betragtet som f.eks. metoder. det virker, men det går ud fra, du ved om prototypical arv, og en, der kommer fra en klassebaseret sprog, det ser meget forvirrende.underligt nok, javascript har en klasse er nøgleordet, men det gør ikke noget.ecmascript 6 nu gør dette arbejde og giver mulighed for en kortere kode:,, klasse animales6 {konstruktøren (navn) (this.name = navn} dosomething() (konsol. log ("jeg" +. navn)) var liones6 = nye animales6 ("lion"); liones6. dosomething(),,, resultatet er det samme, men det er lettere at skrive og læse for udviklere, der er vant til at skrive klasser.der er ikke behov for en prototype, og du kan bruge den nye nøgleord for at definere den pågældende.desuden klasser, indfører en række nye ordkløveri, der ikke er til stede i ecmascript 5, tilsvarende.for eksempel, du kan ikke kalde en konstruktør uden nye,, og du kan ikke forsøg på at opbygge metoder med nye.en anden ændring er, at metoder ikke er enumerable.og, interessant: begge versioner kan leve side om side, ved udgangen af den dag, selv med de nye nøgleord, ender du med en funktion med en prototype, hvor en funktion blev tilføjet.en "- metoden" her er simpelthen en funktion ejendom på dit objekt.,, to andre centrale elementer i klasse baseret udvikling, getters og montører, støttes også i es6.det gør det meget mere klart, hvad en metode, skal  :,, klasse animales6 {konstruktøren (navn) (this.name = navn. _age = 0} få age() {tilbage. _age;} fastsat alder (i værdi) (hvis (værdi < 0) (log (konsollen. vi støtter ikke levende dyr ")). _age = værdi;} dosomething() (konsol. log (" jeg "+. navn)) var liones6 = nye animales6 (" lion "); liones6. dosomething(); liones6.age = 5, ret god, ikke?,, men vi kan se en fælles forbehold af javascript: "ikke private" private medlem (, _age,).jeg skrev en artikel for nogen tid siden, om dette emne. heldigvis har vi nu en bedre måde at gøre dette med et nyt element i ecmascript 6: symboler.,, var agesymbol = symbol(); klasse animales6 {konstruktøren (navn) (this.name = navn; denne [agesymbol] = 0} få age() {returnere denne [agesymbol]} fastsat alder (i værdi) (hvis (værdi < 0) (konsol. log ("vi støtter ikke levende dyr");} denne [agesymbol] = værdi;} dosomething() (konsol. log ("jeg" +. navn)) var liones6 = nye animales6 ("lion"); liones6. dosomething(); liones6.age = 5,,, så hvad er et symbol?det er en enestående og uforanderlige datatype, der kan anvendes som en identifikator for objekt egenskaber.hvis du ikke har det symbol, du ikke kan få adgang til ejendom., og det fører til et mere "privat" medlem adgang., eller i det mindste mindre let tilgængelige.symboler er nyttigt for den enestående navn, men er enestående, ikke indebærer beskyttelse af privatlivets fred.enestående betyder bare, at hvis du har brug for en nøgle, som ikke må være i strid med andre centrale, skaber et nyt symbol.,, men det er egentlig ikke private endnu, for takket være imod. getownpropertysymbols, downstream - forbrugerne kan få adgang til deres symbol egenskaber., 2.håndtering af arv, når vi har klasse, ønsker vi også at få arv.det er igen muligt at simulere arv i es5, men det er ret kompliceret at gøre, f.eks. her er hvad, der er fremstillet af skrivemaskine til at simulere arv:,, var __extends =. __extends



Previous:
Next Page: