Ominaisuuksien Hallinta Gettereillä ja Settereillä
Getterit ja setterit tarjoavat tehokkaan tavan hallita olion ominaisuuksien käyttöä JavaScriptissä.
Mitä ovat getterit ja setterit?
JavaScriptissä getterit ja setterit ovat erityisiä metodeja, jotka mahdollistavat hallitun pääsyn olion ominaisuuksiin. Niiden avulla voidaan määrittää, miten ominaisuus haetaan ja muokataan, samalla suojaten olion sisäistä tilaa.
- Getter: Metodi, jolla haetaan (get) ominaisuuden arvo;
- Setter: Metodi, jolla asetetaan tai päivitetään ominaisuuden arvo.
Ajattele pankkiholvia. Holvi sisältää arvokkaita esineitä (yksityiset ominaisuudet), ja pankkivirkailija (getter/setter) toimii portinvartijana. Holviin ei pääse suoraan käsiksi, mutta virkailija voi noutaa tai päivittää esineitä puolestasi tiettyjen sääntöjen ja tarkistusten mukaisesti.
Getterien ja setterien määrittely ja käyttö
Getterit ja setterit määritellään get- ja set-avainsanoilla luokan sisällä. Kun ominaisuutta käytetään, getter aktivoituu automaattisesti. Vastaavasti, kun ominaisuutta muokataan, kutsutaan setteriä sen sijaan, että ominaisuutta muutettaisiin suoraan.
12345678910111213141516171819202122232425262728293031323334class Animal { #type; // Private field constructor(name, type) { this.name = name; this.#type = type; // Assigning the private field } // Getter for the type property get type() { return this.#type; } // Setter for the type property set type(newType) { if (newType) { this.#type = newType; } else { console.log('Invalid type'); } } } const lion = new Animal('Lion', 'Wild'); // Using getter to access the private type console.log(lion.type); // Output: Wild // Using setter to modify the private type lion.type = 'Domestic'; console.log(lion.type); // Output: Domestic // Trying to set an invalid value lion.type = ''; // Output: Invalid type
Tässä esimerkissä #type on yksityinen ominaisuus, ja määrittelemme getterin (get type()) sen arvon hakemiseen sekä setterin (set type(newType)) sen muuttamiseen. Setter sisältää validoinnin, joka estää virheellisten arvojen asettamisen, mikä havainnollistaa, kuinka yksityisten tietojen päivityksiä voidaan hallita.
Getterien ja setterien hyödyt
Hallittu pääsy
- Getterit mahdollistavat määrittää, miten ominaisuuden arvoa käytetään, jolloin voit käsitellä tai muokata arvoa ennen sen palauttamista;
- Setterit antavat hallinnan siihen, miten ominaisuutta päivitetään, mahdollistaen tietojen validoinnin tai muuntamisen ennen niiden asettamista yksityiseen kenttään.
Datan suojaus
- Getterien ja setterien käyttö auttaa suojaamaan olion sisäistä tilaa tarjoamalla hallitun rajapinnan vuorovaikutukseen;
- Yksityiset ominaisuudet voidaan pitää piilossa, ja voit paljastaa ulkoiselle koodille vain tarvittavat tiedot.
Joustavuus
Getterit ja setterit mahdollistavat lisälogiikan, kuten validoinnin tai lokituksen, lisäämisen ominaisuuksien käsittelyyn ilman, että ulkoisen koodin tapa käyttää oliota muuttuu.
Esimerkki: Käyttäjätili ja salasanan validointi
Kuvittele, että hallinnoit käyttäjätilejä, joissa salasanojen on täytettävä tietyt tietoturvavaatimukset. Setterin avulla voit varmistaa salasanan vahvuuden, kun taas getter voi palauttaa salasanasta peitetyn version näyttötarkoituksiin.
12345678910111213141516171819202122232425262728293031323334class UserAccount { #password; // Private field constructor(username, password) { this.username = username; this.#password = password; } // Getter for password (returning a masked version) get password() { return '*'.repeat(this.#password.length); // Mask the password when retrieved } // Setter for password with validation set password(newPassword) { if (newPassword.length >= 8) { this.#password = newPassword; } else { console.log('Password must be at least 8 characters long'); } } } const user = new UserAccount('nick_feather', 'secret123'); // Accessing the password using the getter (masked) console.log(user.password); // Output: ********* // Setting a new valid password using the setter user.password = 'strongPassword123'; console.log(user.password); // Output: *************** // Trying to set an invalid password user.password = '123'; // Output: Password must be at least 8 characters long
Tässä esimerkissä getter palauttaa salasanan peitetyn version piilottaakseen todellisen arvon, ja setter toteuttaa salasanan validoinnin varmistaen, että salasana on vähintään 8 merkkiä pitkä.
Esimerkki validointilogiikasta gettereiden ja settereiden avulla
Tässä on toinen esimerkki, jossa hallitaan henkilön ikää ja varmistetaan, että arvo pysyy järkevällä alueella:
12345678910111213141516171819202122232425262728293031323334class Person { #age; // Private field constructor(name, age) { this.name = name; this.#age = age; } // Getter for age get age() { return this.#age; } // Setter for age with validation set age(newAge) { if (newAge > 0 && newAge < 120) { this.#age = newAge; } else { console.log('Invalid age'); } } } const peter = new Person('Peter', 30); // Accessing the age using the getter console.log(peter.age); // Output: 30 // Setting a new valid age using the setter peter.age = 35; console.log(peter.age); // Output: 35 // Trying to set an invalid age peter.age = 150; // Output: Invalid age
Tämä esimerkki havainnollistaa, kuinka asettaja voi varmistaa, että ikä pysyy sallitulla alueella, estäen virheellisen datan tallentamisen.
1. Mikä on pääasiallinen tarkoitus käyttää hakijoita (getters)?
2. Mitä seuraava koodi tulostaa, kun suoritetaan console.log(user.password);?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Awesome!
Completion rate improved to 2.22
Ominaisuuksien Hallinta Gettereillä ja Settereillä
Pyyhkäise näyttääksesi valikon
Getterit ja setterit tarjoavat tehokkaan tavan hallita olion ominaisuuksien käyttöä JavaScriptissä.
Mitä ovat getterit ja setterit?
JavaScriptissä getterit ja setterit ovat erityisiä metodeja, jotka mahdollistavat hallitun pääsyn olion ominaisuuksiin. Niiden avulla voidaan määrittää, miten ominaisuus haetaan ja muokataan, samalla suojaten olion sisäistä tilaa.
- Getter: Metodi, jolla haetaan (get) ominaisuuden arvo;
- Setter: Metodi, jolla asetetaan tai päivitetään ominaisuuden arvo.
Ajattele pankkiholvia. Holvi sisältää arvokkaita esineitä (yksityiset ominaisuudet), ja pankkivirkailija (getter/setter) toimii portinvartijana. Holviin ei pääse suoraan käsiksi, mutta virkailija voi noutaa tai päivittää esineitä puolestasi tiettyjen sääntöjen ja tarkistusten mukaisesti.
Getterien ja setterien määrittely ja käyttö
Getterit ja setterit määritellään get- ja set-avainsanoilla luokan sisällä. Kun ominaisuutta käytetään, getter aktivoituu automaattisesti. Vastaavasti, kun ominaisuutta muokataan, kutsutaan setteriä sen sijaan, että ominaisuutta muutettaisiin suoraan.
12345678910111213141516171819202122232425262728293031323334class Animal { #type; // Private field constructor(name, type) { this.name = name; this.#type = type; // Assigning the private field } // Getter for the type property get type() { return this.#type; } // Setter for the type property set type(newType) { if (newType) { this.#type = newType; } else { console.log('Invalid type'); } } } const lion = new Animal('Lion', 'Wild'); // Using getter to access the private type console.log(lion.type); // Output: Wild // Using setter to modify the private type lion.type = 'Domestic'; console.log(lion.type); // Output: Domestic // Trying to set an invalid value lion.type = ''; // Output: Invalid type
Tässä esimerkissä #type on yksityinen ominaisuus, ja määrittelemme getterin (get type()) sen arvon hakemiseen sekä setterin (set type(newType)) sen muuttamiseen. Setter sisältää validoinnin, joka estää virheellisten arvojen asettamisen, mikä havainnollistaa, kuinka yksityisten tietojen päivityksiä voidaan hallita.
Getterien ja setterien hyödyt
Hallittu pääsy
- Getterit mahdollistavat määrittää, miten ominaisuuden arvoa käytetään, jolloin voit käsitellä tai muokata arvoa ennen sen palauttamista;
- Setterit antavat hallinnan siihen, miten ominaisuutta päivitetään, mahdollistaen tietojen validoinnin tai muuntamisen ennen niiden asettamista yksityiseen kenttään.
Datan suojaus
- Getterien ja setterien käyttö auttaa suojaamaan olion sisäistä tilaa tarjoamalla hallitun rajapinnan vuorovaikutukseen;
- Yksityiset ominaisuudet voidaan pitää piilossa, ja voit paljastaa ulkoiselle koodille vain tarvittavat tiedot.
Joustavuus
Getterit ja setterit mahdollistavat lisälogiikan, kuten validoinnin tai lokituksen, lisäämisen ominaisuuksien käsittelyyn ilman, että ulkoisen koodin tapa käyttää oliota muuttuu.
Esimerkki: Käyttäjätili ja salasanan validointi
Kuvittele, että hallinnoit käyttäjätilejä, joissa salasanojen on täytettävä tietyt tietoturvavaatimukset. Setterin avulla voit varmistaa salasanan vahvuuden, kun taas getter voi palauttaa salasanasta peitetyn version näyttötarkoituksiin.
12345678910111213141516171819202122232425262728293031323334class UserAccount { #password; // Private field constructor(username, password) { this.username = username; this.#password = password; } // Getter for password (returning a masked version) get password() { return '*'.repeat(this.#password.length); // Mask the password when retrieved } // Setter for password with validation set password(newPassword) { if (newPassword.length >= 8) { this.#password = newPassword; } else { console.log('Password must be at least 8 characters long'); } } } const user = new UserAccount('nick_feather', 'secret123'); // Accessing the password using the getter (masked) console.log(user.password); // Output: ********* // Setting a new valid password using the setter user.password = 'strongPassword123'; console.log(user.password); // Output: *************** // Trying to set an invalid password user.password = '123'; // Output: Password must be at least 8 characters long
Tässä esimerkissä getter palauttaa salasanan peitetyn version piilottaakseen todellisen arvon, ja setter toteuttaa salasanan validoinnin varmistaen, että salasana on vähintään 8 merkkiä pitkä.
Esimerkki validointilogiikasta gettereiden ja settereiden avulla
Tässä on toinen esimerkki, jossa hallitaan henkilön ikää ja varmistetaan, että arvo pysyy järkevällä alueella:
12345678910111213141516171819202122232425262728293031323334class Person { #age; // Private field constructor(name, age) { this.name = name; this.#age = age; } // Getter for age get age() { return this.#age; } // Setter for age with validation set age(newAge) { if (newAge > 0 && newAge < 120) { this.#age = newAge; } else { console.log('Invalid age'); } } } const peter = new Person('Peter', 30); // Accessing the age using the getter console.log(peter.age); // Output: 30 // Setting a new valid age using the setter peter.age = 35; console.log(peter.age); // Output: 35 // Trying to set an invalid age peter.age = 150; // Output: Invalid age
Tämä esimerkki havainnollistaa, kuinka asettaja voi varmistaa, että ikä pysyy sallitulla alueella, estäen virheellisen datan tallentamisen.
1. Mikä on pääasiallinen tarkoitus käyttää hakijoita (getters)?
2. Mitä seuraava koodi tulostaa, kun suoritetaan console.log(user.password);?
Kiitos palautteestasi!