JavaScript Academy · Oppitunti

Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet

Luo luokkia julkisilla kentillä, piilota data yksityisillä #‑kentillä ja lisää staattisia ominaisuuksia ja metodeja

Oppitunti 1/38 vaihetta

Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet on ilmainen JavaScript Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/3. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu JavaScript Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. JavaScript Academy-kurssilla on yhteensä 3 oppituntia.

Miksi luokkia?

Tavoite: Rakentaa pieniä ja selkeitä luokkia.

  • Julkiset kentät ja metodit
  • #private-kentät piilotetulle tilalle
  • static-ominaisuudet ja -metodit luokkatasoisia apureita varten
  • Esimerkit pidetään pieninä ja helposti luettavina
Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 1

Julkiset kentät ja konstruktori

Luokaa luokka, jossa on julkinen kenttä ja pieniä metodeja; pitäkää logiikka aloittelijoille yksinkertaisena.

// Public fields and a simple method
class Counter {
  // public field with default
  value = 0;

  constructor(start) {
    // use a default if start is not provided
    this.value = Number.isFinite(start) ? start : 0;
  }

  inc() {
    this.value = this.value + 1;
  }
}

const c1 = new Counter(2);
c1.inc();
console.log("value:", c1.value); // 3
Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 2

Yksityiset #-kentät

#private-kentät ovat kielen valvomia, ja niitä voi käyttää vain luokan rungon sisällä. Tarvittaessa toteuttakaa lukumetodeja arvojen lukemista varten.

// Private # fields hide internal state
class SafeCounter {
  // private field (only inside the class)
  #value = 0;

  constructor(start) {
    this.#value = Number.isFinite(start) ? start : 0;
  }

  inc() { this.#value = this.#value + 1; }
  getValue() { return this.#value; } // expose via method
}

const sc = new SafeCounter(5);
sc.inc();
console.log("safe value:", sc.getValue());

// External access fails (uncommenting the next line would throw):
// console.log(sc.#value);
Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 3

Getterit turvallisia lukuja varten

Getter voi palauttaa johdetun tai validoidun arvon samalla, kun kenttä pysyy yksityisenä.

// Getters provide read-only views; simple guard logic
class User {
  #name = "Anonymous";
  constructor(name) {
    if (typeof name === "string" && name.trim().length > 0) {
      this.#name = name.trim();
    }
  }
  get name() {
    return this.#name;
  }
}

const u = new User(" Ayla ");
console.log("name:", u.name);
Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 4

Staattiset jäsenet

static-jäseniä kutsutaan luokan kautta (esimerkiksi MathHelp.circleArea()), ei instanssien kautta.

// Static = belongs to the class, not to instances
class MathHelp {
  static PI = 3.14159;
  static circleArea(r) {
    if (!(typeof r === "number" && r >= 0)) return 0;
    return MathHelp.PI * r * r;
  }
}

console.log("PI:", MathHelp.PI);
console.log("area r=2:", MathHelp.circleArea(2));

// Instances do not have the static members:
const mh = new MathHelp();
console.log("instance has PI?", "PI" in mh); // false
Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 5

Aloittelijalle sopivat käytännöt

Vinkkejä:

  • Suosikaa pieniä luokkia, joissa on vain muutama selkeä metodi.
  • Käyttäkää #private-kenttiä todelliseen yksityisyyteen; alaviivat ovat vain nimeämiskäytäntö.
  • Sijoittakaa vakiot ja apuohjelmat static-jäseniin.
  • Tarvittaessa tarjotkaa ulkopuoliseen käyttöön vain vähimmäismäärä lukumetodeja eli gettereitä.
Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 6

Yksityisten kenttien perusteiden visa

Pikatarkistus: #private-kentät.

Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 7

Kertaus

Kertaus: Käyttäkää julkisia kenttiä yksinkertaiseen tilaan, #private-kenttiä sisäisten tietojen piilottamiseen ja static-jäseniä luokkatasoisiin apureihin. Pitäkää jokainen luokka pienenä ja helposti luettavana.

Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet — kuvitus 8
Aloita maksutta

Opi JavaScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
59
Oppitunnit
200

Usein kysytyt kysymykset

Onko oppitunti ”Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa JavaScript Academy-oppimispolun 3 oppituntia, myös oppitunnin “Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. JavaScript Academy-kurssilla on yhteensä 3 oppituntia.

Mitä opin oppitunnilla ”Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet”?

Luo luokkia julkisilla kentillä, piilota data yksityisillä #‑kentillä ja lisää staattisia ominaisuuksia ja metodeja Harjoittelet JavaScript Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni JavaScript Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin JavaScript Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/3.

Kuinka kauan ”Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä JavaScript Academy-oppitunnilla?

Kyllä. Jokainen JavaScript Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Luokkakentät, yksityiset #‑kentät ja staattiset jäsenet
  2. Perintä, super ja milloin koostaminen kannattaa
  3. Mixin-rakenteet — yksinkertaista uudelleenkäyttöä ilman syviä hierarkioita
← Takaisin: JavaScript Academy