Enums JavaScriptissä ovat tapa määrittää joukko nimettyjä vakioita, joita käytetään usein edustamaan toisiinsa liittyvien arvojen kokoelmaa. Vaikka JavaScriptissä ei ole sisäänrakennettua tukea enumeille, samanlaisia toimintoja voidaan saavuttaa käyttämällä objekteja tai const-muuttujia koodin luettavuuden ja ylläpidettävyyden parantamiseksi.
Sisään JavaScript , Enumerations tai Enums käytetään edustamaan kiinteää joukkoa nimettyjä arvoja. Enumit eivät kuitenkaan ole alkuperäisiä JavaScriptille, joten ne toteutetaan yleensä käyttämällä objekteja tai jäädytettyjä taulukoita.
Varmistaaksesi enumien muuttumattomuuden JavaScriptissä, voit noudattaa näitä ohjeita:
Object.freeze() -menetelmä:
Yksi tapa luoda Enum-tyyppinen objekti on määrittää yksinkertainen JavaScript-objekti, jolla on vakioarvot, ja sitten käyttää Object.freeze() estääkseen muut muutokset. Tämä varmistaa, että objektia ja sen ominaisuuksia ei voida muuttaa tai mutatoida. Voit käyttää Object.freeze() menetelmä estääksesi muutokset objektiin. Kun objekti on jäädytetty, et voi lisätä, muokata tai poistaa mitään sen ominaisuuksia. Tämän menetelmän avulla voit luoda muuttumattoman objektin, joka edustaa Enumiasi.
Syntaksi:
Object.freeze()>
Object.defineProperty() -menetelmä:
Voit käyttää Object.defineProperty()-metodia sellaisten ominaisuuksien määrittämiseen, joita ei voi muuttaa, lisätä tai poistaa. Tämän menetelmän avulla voit luoda vain luku -ominaisuuden kullekin Enum-arvolle. Voit käyttää Object.defineProperty()-metodia sellaisten ominaisuuksien määrittämiseen, joita ei voi muuttaa, lisätä tai poistaa. Tämän menetelmän avulla voit luoda vain luku -ominaisuuden kullekin Enum-arvolle.
Käyttää TypeScript : TypeScript on JavaScriptin superjoukko, joka sisältää tuen Enumsille. TypeScriptin avulla voit määrittää enumit tavalla, joka takaa niiden muuttumattomuuden.
Esimerkki 1: Tässä esimerkissä luomme Enum-objektin nimeltä DaysOfWeek komennolla Object.freeze(). Object.freeze()-metodi tekee objektista muuttumattoman, joten emme voi lisätä, muokata tai poistaa objektin ominaisuuksia.
Javascript const DaysOfWeek = Object.freeze({ SUNDAY: 0, MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6 }); // Try to modify the enum // This will not change the Sunday variable DaysOfWeek.SUNDAY = 7; console.log(DaysOfWeek.SUNDAY);> Lähtö:
0>
ES6-symboli:
Toinen tapa luoda Enum JavaScriptissä on käyttää ES6-symboleja. Symbolit ovat yksilöllisiä tunnisteita, joita ei voida monistaa ja joita voidaan käyttää vakioarvojen määrittämiseen, jotka ovat taatusti ainutlaatuisia ja muuttumattomia.
Esimerkki: Tässä esimerkissä määritämme luettelon nimeltä myEnum käyttämällä Object.freeze()-funktiota, jotta objektiin ei tehdä muutoksia. Käytämme Symbol()-toimintoa yksilöllisten symbolien luomiseen kullekin enum-arvolle.
Javascript const myEnum = Object.freeze({ FOO: Symbol('foo'), BAR: Symbol('bar'), BAZ: Symbol('baz') }); console.log(myEnum.FOO); // Symbol(foo) // Attempting to modify the enum // values will have no effect myEnum.FOO = Symbol('newFoo'); console.log(myEnum.FOO); // Symbol(foo) // Adding a new property to the enum // object will also have no effect myEnum.QUX = Symbol('qux'); console.log(myEnum.QUX); // undefined> Lähtö:
Symbol(foo) Symbol(foo) undefined>
Sulkemisen käyttäminen:
Voit myös käyttää sulkemista enumin luomiseen. Sulkeminen on funktio, jolla on pääsy muuttujiin sen ulkoisessa funktioalueella. Luomalla sisäisen funktion, joka palauttaa arvon, voimme tehdä ulomman funktioalueen muuttujan vain luku -muotoiseksi.
Esimerkki: Tässä esimerkissä käytämme sulkemista luodaksemme objektin nimeltä DaysOfWeek. Päivät-objekti on määritelty funktion ulkoalueella, eikä sitä voida käyttää funktion ulkopuolelta. Sisäinen funktio get palauttaa päivän objektista annetun ominaisuuden arvon. Koska päivät-objektiin ei pääse suoraan, sitä ei voi muokata sulkemisen ulkopuolelta.
Javascript const DaysOfWeek = (function () { const days = { SUNDAY: 0, MONDAY: 1, TUESDAY: 2, WEDNESDAY: 3, THURSDAY: 4, FRIDAY: 5, SATURDAY: 6 }; return { get: function (name) { return days[name]; } }; })(); // Try to modify the enum // This will not have any effect DaysOfWeek.SUNDAY = 7; console.log(DaysOfWeek.get('SUNDAY')); // Output: 0> Lähtö:
0>