Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: es6 przekazanie parametrów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
d4ng
Cześć ucze się es6 i nie bardzo wiem dlaczego przy tworzeniu new i przekazywaniu parametrów html i js sie nie zmienia? (26 linijka) Czy da się zmienić wartości obiektu skills przekazując je przy tworzeniu new a nie przez metode setSkills?

[JAVASCRIPT] pobierz, plaintext
  1. class Person { // super klasa - rodzic zawsze z dużej litery
  2. constructor(age, skills) {
  3. this.age = age; // przypisanie wartości z przekazanego argumentu
  4. this.skills = {
  5. html: 0,
  6. js: 0
  7. };
  8. }
  9. setSkills(html, js) { // metody tworzymy bez słowa function
  10. this.skills.html += html;
  11. this.skills.js += js;
  12. }
  13.  
  14. static viewMessage() {
  15. return 'Hi There';
  16. }
  17. }
  18.  
  19. class Developer extends Person { // rozszezenie rodzica - dziecko
  20. constructor(age, skills) {
  21. super(age, skills);
  22. this.skills.css = 5;
  23. }
  24. }
  25.  
  26. const jarek = new Developer(28, {html: 4, js: 3}); // const jeżlei ma to być stała opcjonalnie let
  27. console.log(jarek); // Developer {age: 28, skills: {html: 0, js: 0, css: 5}}
  28. jarek.setSkills(5, 3); // a powinno być Developer {age: 28, skills: {html: 4, js: 3, css: 5}}
  29. console.log(jarek); // Developer {age: 28, skills: {html: 5, js: 3, css: 5}}
[JAVASCRIPT] pobierz, plaintext
trueblue
Przecież w klasie Person ustawiasz obydwie właściwości na 0.
d4ng
faktycznie bo są to wartości deafultowe .. teraz jest ok.


[JAVASCRIPT] pobierz, plaintext
  1. class Person { // super klasa - rodzic zawsze z dużej litery
  2. constructor(age, skills) {
  3. this.age = age; // przypisanie wartości z przekazanego argumentu
  4. this.fun = '100%';
  5. this.skills = {
  6. html: skills.html,
  7. js: skills.js
  8. };
  9. }
  10. set Skills(value) { // możemy korzystać z set, get
  11. this.skills.html = value.html;
  12. this.skills.js = value.js;
  13. }
  14.  
  15. get Skills() {
  16. return this.skills;
  17. }
  18.  
  19. static viewMessage() {
  20. return 'Hi There';
  21. }
  22. }
  23.  
  24. class Developer extends Person { // rozszezenie rodzica - dziecko
  25. constructor(age, skills) {
  26. super(age, skills);
  27. this.skills.css = 5;
  28. }
  29. }
  30.  
  31. const jarek = new Developer(28, {html: 4, js: 3}); // const jeżlei ma to być stała opcjonalnie let
  32. console.log(jarek); // Developer {age: 28, fun: "100%", skills: {html: 4, js: 3, css: 5}}
  33. jarek.Skills = {html: 5, js: 4}; // {html: 5, js: 4, css: 5}
  34. console.log(jarek.Skills); // nie przypisując wartosci odwoływuje się do get'a
  35. console.log(jarek); // Developer {age: 28, fun: "100%", skills: {html: 5, js: 4, css: 5}}
[JAVASCRIPT] pobierz, plaintext
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.