Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Staattisten Ominaisuuksien Tutkiminen Javascriptissä | JavaScript-luokkien ja Perinnän Hallinta
Edistynyt JavaScript-Osaaminen

bookStaattisten Ominaisuuksien Tutkiminen Javascriptissä

Ohjelmoinnissa staattiset ominaisuudet mahdollistavat jaetun tiedon olemassaolon kaikissa luokan olioissa, mikä tekee niistä ihanteellisia yhtenäisen datan säilyttämiseen.

Mitä ovat staattiset ominaisuudet?

Staattiset ominaisuudet kuuluvat itse luokalle, eivät yksittäisille olioille. Tämä tarkoittaa, että staattiset ominaisuudet ovat yhteisiä kaikille olioille ja niihin pääsee käsiksi suoraan luokan kautta ilman olion luomista. Niitä käytetään usein apufunktioihin, vakioihin tai dataan, jonka tulee olla jaettu kaikkien luokan olioiden kesken.

Kuvittele yritys, jossa jokaisella työntekijällä (luokan olio) on omat henkilötietonsa (nimi, asema), mutta yrityksen osoite (staattinen ominaisuus) on sama kaikille työntekijöille. Osoite kuuluu yritykselle itselleen, ei yksittäiselle työntekijälle.

Staattisten ominaisuuksien määrittely ja käyttö

Staattinen ominaisuus määritellään käyttämällä static-avainsanaa luokan sisällä. Staattisiin ominaisuuksiin pääsee käsiksi vain luokan nimen kautta, ei luokan olioista.

1234567891011121314151617181920
class Company { static headquarters = '123 Main St'; // Static property constructor(name) { this.name = name; // Instance property } getCompanyInfo() { return `${this.name} is located at ${Company.headquarters}`; } } const google = new Company('Google'); console.log(google.getCompanyInfo()); // Output: Google is located at 123 Main St const amazon = new Company('Amazon'); console.log(amazon.getCompanyInfo()); // Output: Amazon is located at 123 Main St // Accessing the static property directly from the class console.log(Company.headquarters); // Output: 123 Main St
copy

Tässä esimerkissä headquarters-ominaisuus on jaettu kaikkien Company-luokan olioiden kesken. Sekä Google- että Amazon-oliot viittaavat samaan pääkonttorin osoitteeseen. Staattisiin ominaisuuksiin viitataan suoraan luokan nimellä (Company.headquarters), ei luokan olioiden kautta.

Miten staattiset ominaisuudet jaetaan kaikille luokan olioille

Koska staattiset ominaisuudet liitetään itse luokkaan, niitä ei kopioida jokaiselle oliolle erikseen. Kaikki luokan oliot viittaavat samaan staattiseen ominaisuuteen, mikä tekee siitä tehokkaan tavan tallentaa tietoa, jonka ei tarvitse muuttua olioittain.

Esimerkki: Luotujen olioiden laskuri

Oletetaan, että haluamme seurata, kuinka monta luokan oliota on luotu. Voimme käyttää staattista ominaisuutta instanssien määrän tallentamiseen ja kasvattaa sitä aina, kun uusi olio luodaan.

123456789101112131415161718192021222324
class User { static count = 0; // Static property to track the number of users constructor(name) { this.name = name; User.count++; // Increment static property every time a new user is created } getUserInfo() { return `${this.name} is user number ${User.count}`; } } const user1 = new User('John'); const user2 = new User('Jane'); const user3 = new User('Alice'); // Accessing the static property directly from the class console.log(User.count); // Output: 3 (number of users created) // Each instance can see the total count of users console.log(user1.getUserInfo()); // Output: John is user number 3 console.log(user2.getUserInfo()); // Output: Jane is user number 3 console.log(user3.getUserInfo()); // Output: Alice is user number 3
copy

Tässä esimerkissä staattista count-ominaisuutta kasvatetaan aina, kun uusi käyttäjä luodaan. Kaikki User-luokan oliot jakavat saman count-arvon, koska se kuuluu itse luokalle.

Staattisten ominaisuuksien edut

Koska staattiset ominaisuudet jaetaan kaikille olioille, tietoa ei tarvitse monistaa, mikä tekee koodista selkeämpää ja tehokkaampaa. Ne soveltuvat erityisen hyvin tiedon tallentamiseen, joka on sama kaikille olioille, kuten määritykset tai vakiot, ja auttavat ylläpitämään johdonmukaisuutta koko koodissa.

Käytännön esimerkki: Sovelluksen määritykset

Käytännön tilanteessa sovelluksessa voi olla määritysobjekti, joka tallentaa yhteiset asetukset koko sovellukselle. Staattiset ominaisuudet ovat erinomainen valinta tällaisiin käyttötarkoituksiin.

12345678910111213141516171819202122
class AppConfig { static appName = 'QuirkApp Solutions'; // Shared configuration setting static version = '1.3.14'; // Shared configuration setting constructor(user) { this.user = user; } getUserConfig() { return `${this.user} is using ${AppConfig.appName} version ${AppConfig.version}`; } } const user1 = new AppConfig('Alice'); const user2 = new AppConfig('Bob'); console.log(user1.getUserConfig()); // Output: Alice is using QuirkApp Solutions version 1.3.14 console.log(user2.getUserConfig()); // Output: Bob is using QuirkApp Solutions version 1.3.14 // Accessing static properties directly from the class console.log(AppConfig.appName); // Output: QuirkApp Solutions console.log(AppConfig.version); // Output: 1.3.14
copy

Tässä esimerkissä sovelluksen nimi ja versio jaetaan kaikille sovelluksen käyttäjille. Staattiset ominaisuudet appName ja version kuuluvat luokalle, eivätkä ne kopioidu jokaiselle ilmentymälle.

1. Mikä on staattinen ominaisuus?

2. Miten staattiseen ominaisuuteen päästään käsiksi?

3. Seuraavassa koodissa, mitä console.log(User.count); tulostaa?

question mark

Mikä on staattinen ominaisuus?

Select the correct answer

question mark

Miten staattiseen ominaisuuteen päästään käsiksi?

Select the correct answer

question mark

Seuraavassa koodissa, mitä console.log(User.count); tulostaa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 11

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 2.22

bookStaattisten Ominaisuuksien Tutkiminen Javascriptissä

Pyyhkäise näyttääksesi valikon

Ohjelmoinnissa staattiset ominaisuudet mahdollistavat jaetun tiedon olemassaolon kaikissa luokan olioissa, mikä tekee niistä ihanteellisia yhtenäisen datan säilyttämiseen.

Mitä ovat staattiset ominaisuudet?

Staattiset ominaisuudet kuuluvat itse luokalle, eivät yksittäisille olioille. Tämä tarkoittaa, että staattiset ominaisuudet ovat yhteisiä kaikille olioille ja niihin pääsee käsiksi suoraan luokan kautta ilman olion luomista. Niitä käytetään usein apufunktioihin, vakioihin tai dataan, jonka tulee olla jaettu kaikkien luokan olioiden kesken.

Kuvittele yritys, jossa jokaisella työntekijällä (luokan olio) on omat henkilötietonsa (nimi, asema), mutta yrityksen osoite (staattinen ominaisuus) on sama kaikille työntekijöille. Osoite kuuluu yritykselle itselleen, ei yksittäiselle työntekijälle.

Staattisten ominaisuuksien määrittely ja käyttö

Staattinen ominaisuus määritellään käyttämällä static-avainsanaa luokan sisällä. Staattisiin ominaisuuksiin pääsee käsiksi vain luokan nimen kautta, ei luokan olioista.

1234567891011121314151617181920
class Company { static headquarters = '123 Main St'; // Static property constructor(name) { this.name = name; // Instance property } getCompanyInfo() { return `${this.name} is located at ${Company.headquarters}`; } } const google = new Company('Google'); console.log(google.getCompanyInfo()); // Output: Google is located at 123 Main St const amazon = new Company('Amazon'); console.log(amazon.getCompanyInfo()); // Output: Amazon is located at 123 Main St // Accessing the static property directly from the class console.log(Company.headquarters); // Output: 123 Main St
copy

Tässä esimerkissä headquarters-ominaisuus on jaettu kaikkien Company-luokan olioiden kesken. Sekä Google- että Amazon-oliot viittaavat samaan pääkonttorin osoitteeseen. Staattisiin ominaisuuksiin viitataan suoraan luokan nimellä (Company.headquarters), ei luokan olioiden kautta.

Miten staattiset ominaisuudet jaetaan kaikille luokan olioille

Koska staattiset ominaisuudet liitetään itse luokkaan, niitä ei kopioida jokaiselle oliolle erikseen. Kaikki luokan oliot viittaavat samaan staattiseen ominaisuuteen, mikä tekee siitä tehokkaan tavan tallentaa tietoa, jonka ei tarvitse muuttua olioittain.

Esimerkki: Luotujen olioiden laskuri

Oletetaan, että haluamme seurata, kuinka monta luokan oliota on luotu. Voimme käyttää staattista ominaisuutta instanssien määrän tallentamiseen ja kasvattaa sitä aina, kun uusi olio luodaan.

123456789101112131415161718192021222324
class User { static count = 0; // Static property to track the number of users constructor(name) { this.name = name; User.count++; // Increment static property every time a new user is created } getUserInfo() { return `${this.name} is user number ${User.count}`; } } const user1 = new User('John'); const user2 = new User('Jane'); const user3 = new User('Alice'); // Accessing the static property directly from the class console.log(User.count); // Output: 3 (number of users created) // Each instance can see the total count of users console.log(user1.getUserInfo()); // Output: John is user number 3 console.log(user2.getUserInfo()); // Output: Jane is user number 3 console.log(user3.getUserInfo()); // Output: Alice is user number 3
copy

Tässä esimerkissä staattista count-ominaisuutta kasvatetaan aina, kun uusi käyttäjä luodaan. Kaikki User-luokan oliot jakavat saman count-arvon, koska se kuuluu itse luokalle.

Staattisten ominaisuuksien edut

Koska staattiset ominaisuudet jaetaan kaikille olioille, tietoa ei tarvitse monistaa, mikä tekee koodista selkeämpää ja tehokkaampaa. Ne soveltuvat erityisen hyvin tiedon tallentamiseen, joka on sama kaikille olioille, kuten määritykset tai vakiot, ja auttavat ylläpitämään johdonmukaisuutta koko koodissa.

Käytännön esimerkki: Sovelluksen määritykset

Käytännön tilanteessa sovelluksessa voi olla määritysobjekti, joka tallentaa yhteiset asetukset koko sovellukselle. Staattiset ominaisuudet ovat erinomainen valinta tällaisiin käyttötarkoituksiin.

12345678910111213141516171819202122
class AppConfig { static appName = 'QuirkApp Solutions'; // Shared configuration setting static version = '1.3.14'; // Shared configuration setting constructor(user) { this.user = user; } getUserConfig() { return `${this.user} is using ${AppConfig.appName} version ${AppConfig.version}`; } } const user1 = new AppConfig('Alice'); const user2 = new AppConfig('Bob'); console.log(user1.getUserConfig()); // Output: Alice is using QuirkApp Solutions version 1.3.14 console.log(user2.getUserConfig()); // Output: Bob is using QuirkApp Solutions version 1.3.14 // Accessing static properties directly from the class console.log(AppConfig.appName); // Output: QuirkApp Solutions console.log(AppConfig.version); // Output: 1.3.14
copy

Tässä esimerkissä sovelluksen nimi ja versio jaetaan kaikille sovelluksen käyttäjille. Staattiset ominaisuudet appName ja version kuuluvat luokalle, eivätkä ne kopioidu jokaiselle ilmentymälle.

1. Mikä on staattinen ominaisuus?

2. Miten staattiseen ominaisuuteen päästään käsiksi?

3. Seuraavassa koodissa, mitä console.log(User.count); tulostaa?

question mark

Mikä on staattinen ominaisuus?

Select the correct answer

question mark

Miten staattiseen ominaisuuteen päästään käsiksi?

Select the correct answer

question mark

Seuraavassa koodissa, mitä console.log(User.count); tulostaa?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 11
some-alt