JavaScript Classified

515 views

Published on

W wyniku różnorodnych metod implementacji przez poszczególne frameworki, w temacie klas w JavaScript zdiagnozowano rozszczepienie osobowości. Na szczęście odpowiednie lekarstwo powoli jest szykowane, o czym będę starał się opowiedzieć w tej prezentacji. Jednocześnie postaram się przypomnieć historie choroby, jej objawy i wytłumaczyć, dlaczego kuracja jest tak bardzo pożądana.

Published in: Software, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
515
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

JavaScript Classified

  1. 1. JavaScript Artur Skowroński
  2. 2. Abstrakcja (łac. abstractio - oderwanie)
  3. 3. Klasyczne podejście Konstruktor Funkcyjny
  4. 4. function Person(name){ this.name=name; } Person.prototype.show=function(){ console.log("Jestem " + this.firm); };
  5. 5. Employee.prototype = new Person(); Employee.prototype.constructor = Employee;
  6. 6. Employee.prototype.show = function(){ Person.prototype.show.call(this); console.log("Pracuje w firme " + this.firm); };
  7. 7. Object.create For Loop
  8. 8. Core API
  9. 9. EcmaScript 3 Grudzień 1999 Wyrażenia regularne Try Catch
  10. 10. ECMAScript 4 Packages Namespaces Klasy
  11. 11. Grudzień 2009 ECMAScript 3.1ECMAScript 5
  12. 12. maximally_minimal_classes Aktualny Draft
  13. 13. Tworzenie i konstruktory
  14. 14. ECMAScript 3 function Person(name){ this.name=name; }
  15. 15. ECMAScript 6 class Person { constructor(name){ this.name=name; } }
  16. 16. Metody
  17. 17. Person.prototype.hello = function(){ console.log("Osoba " + this.name ); }; ECMAScript 3
  18. 18. class Person { (…) hello(){ console.log("Osoba "+this.name); } } ECMAScript 6
  19. 19. Dziedziczenie
  20. 20. ECMAScript 3 Man.prototype = new Mammal(); Man.prototype.constructor = Man; ! function Man(firm){ this.firm=firm; }
  21. 21. ECMAScript 6 class Man extends Mammal { constructor(firm){ this.firm= firm; } }
  22. 22. SuperMetody
  23. 23. ECMAScript 3 Employee.prototype.show = function(){ Person.prototype.show.call(this); alert("Pracuje w firme " + this.firm); }
  24. 24. class Employee extends Person { (…) ! show(){ super() alert("Pracuje w firme " + this.firm); } ! } ECMAScript 6
  25. 25. Czego jeszcze nie dostaniemy • Zamkniętego stanu • Properties NazwaKlasy.prototype.nazwaPop = 0;
  26. 26. Future editions of ECMAScript may and probably will extend the proposed class definitions. However, the intent for “ES6” is to only include the features described in this proposal. Attempting to extend this proposal is likely to result in dead-lock that would result in the inclusion of no class definition support in “ES6”.
  27. 27. Podsumowując • Standard dziedziczenia dla wszystkich ! • Naturalne Core API dla twórców Frameworków
  28. 28. Nadzieje
  29. 29. Interoperacyjność
  30. 30. IDE Support
  31. 31. Performance języka http://sealedabstract.com/rants/why-mobile-web-apps-are-slow/
  32. 32. Kiedy?
  33. 33. http://kangax.github.io/compat-table/es6
  34. 34. https://github.com/google/traceur-compiler
  35. 35. Dziękuje bardzo… i zapraszam do pytań Artur Skowroński

×