Enums JavaScript ir veids, kā definēt nosaukto konstantu kopu, ko bieži izmanto, lai attēlotu saistītu vērtību kolekciju. Lai gan JavaScript nav iebūvēts enums atbalsts, līdzīgu funkcionalitāti var panākt, izmantojot objektus vai mainīgos mainīgos, lai uzlabotu koda lasāmību un apkopi.
In JavaScript , Uzskaitījumus vai uzskaitījumus izmanto, lai attēlotu fiksētu nosaukto vērtību kopu. Tomēr Enums nav JavaScript pamatā, tāpēc tie parasti tiek ieviesti, izmantojot objektus vai iesaldētus masīvus.
fmovies
Lai nodrošinātu Enums nemainīgumu JavaScript, varat ievērot šīs vadlīnijas:
Object.freeze() metode:
Viens veids, kā izveidot Enum līdzīgu objektu, ir definēt vienkāršu JavaScript objektu ar nemainīgām īpašuma vērtībām un pēc tam izmantot Object.freeze() lai novērstu jebkādas turpmākas izmaiņas. Tas nodrošinās, ka objektu un tā īpašības nevar mainīt vai mutēt. Jūs varat izmantot Object.freeze() metode, lai novērstu jebkādas izmaiņas objektā. Kad objekts ir iesaldēts, jūs nevarat pievienot, modificēt vai dzēst nevienu tā rekvizītu. Varat izmantot šo metodi, lai izveidotu nemainīgu objektu, kas attēlo jūsu Enum.
Sintakse:
Object.freeze()>
Object.defineProperty() metode:
Varat izmantot metodi Object.defineProperty(), lai definētu rekvizītus, kurus nevar mainīt, pievienot vai dzēst. Varat izmantot šo metodi, lai katrai Enum vērtībai izveidotu tikai lasāmu rekvizītu. Varat izmantot metodi Object.defineProperty(), lai definētu rekvizītus, kurus nevar mainīt, pievienot vai dzēst. Varat izmantot šo metodi, lai katrai Enum vērtībai izveidotu tikai lasāmu rekvizītu.
Izmantot TypeScript : TypeScript ir JavaScript superkopa, kas ietver Enums atbalstu. Izmantojot TypeScript, jūs varat definēt Enums tādā veidā, kas garantē to nemainīgumu.
1. piemērs: Šajā piemērā mēs izveidojam objektu Enum ar nosaukumu DaysOfWeek, izmantojot Object.freeze(). Metode Object.freeze() padara objektu nemainīgu, tāpēc mēs nevaram pievienot, modificēt vai dzēst objekta rekvizītus.
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);> Izvade:
java system.out.println
0>
ES6 simbols:
Vēl viena pieeja Enum izveidei JavaScript ir ES6 simbolu izmantošana. Simboli ir unikāli identifikatori, kurus nevar dublēt, un tos var izmantot, lai definētu nemainīgas vērtības, kas garantēti ir unikālas un nemainīgas.
Piemērs: Šajā piemērā mēs definējam sarakstu ar nosaukumu myEnum, izmantojot Object.freeze(), lai novērstu jebkādas objekta modifikācijas. Mēs izmantojam simbolu (), lai izveidotu unikālus simbolus katrai enum vērtībai.
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> Izvade:
Symbol(foo) Symbol(foo) undefined>
Aizvēršanas izmantošana:
Varat arī izmantot aizdari, lai izveidotu Enum. Slēgšana ir funkcija, kurai ir piekļuve mainīgajiem tās ārējās funkcijas darbības jomā. Izveidojot iekšējo funkciju, kas atgriež vērtību, mēs varam padarīt mainīgo ārējās funkcijas tvērumā tikai lasāmu.
Piemērs: Šajā piemērā mēs izmantojam aizvēršanu, lai izveidotu objektu ar nosaukumu DaysOfWeek. Dienu objekts ir definēts ārējā funkcijas tvērumā un nav pieejams ārpus funkcijas. Iekšējā funkcija get atgriež īpašuma vērtību ar doto nosaukumu no dienas objekta. Tā kā dienas objekts nav tieši pieejams, to nevar mainīt ārpus slēgšanas.
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> Izvade:
0>