Quiz: Simboli e Enumerabili
Conosci le parti meno famose di ES2015?
Quiz: Interfacce JavaScript, Symbol e Enumerabili
- Metti alla prova le tue abilità JavaScript! 🚀
- Nessun login o registrazione richiesti. ✨
- Scelta multipla. 🤖 … Quanto può essere difficile, vero?
Come dovresti accedere a una proprietà di un oggetto JavaScript che utilizza un metodo getter?
const obj = { get val() { return 'got it!'; }};console.log(obj.val);In JavaScript, un getter può essere accesso come una proprietà normale. Non è necessario chiamarlo come una funzione.
In questo esempio, accedere a obj.val direttamente invoca il metodo getter e restituisce got it!.
Qual è il modo corretto per creare una chiave di proprietà veramente unica per un oggetto JavaScript?
const uniqueKey = Symbol('myUniqueKey');const obj = { [uniqueKey]: 'unique value'};console.log(obj[uniqueKey]);I Symbol sono un tipo primitivo unico e immutabile che può essere usato come chiave per le proprietà degli oggetti. Questo aiuta a evitare collisioni di nomi, soprattutto in grandi codebase o quando si scrivono librerie riutilizzabili.
La proprietà age verrà elencata durante un’iterazione for...in?
const person = {};Object.defineProperty(person, 'age', { value: 25, enumerable: true});for (let key in person) { console.log(key);}La proprietà enumerable in Object.defineProperty() controlla se la proprietà apparirà nei metodi di enumerazione come for...in. In questo esempio, poiché enumerable: true, la proprietà age verrà elencata durante l’iterazione.
Qual è l’enumerabilità predefinita di una proprietà quando si usa Object.defineProperty() senza specificare enumerable?
const car = {};Object.defineProperty(car, 'make', { value: 'Toyota'});console.log(Object.keys(car));Quando usi Object.defineProperty() senza specificare enumerable, il valore predefinito è false. Ciò significa che la proprietà make non comparirà in Object.keys() né in altri metodi di enumerazione.
Quale sarà il risultato del confronto seguente?
const sym1 = Symbol('id');const sym2 = Symbol('id');console.log(sym1 === sym2);Ogni chiamata a Symbol() crea un valore unico e immutabile, anche se la descrizione è identica. In questo caso, sym1 e sym2 sono simboli diversi, quindi il confronto restituisce false.
La proprietà indicizzata da Symbol verrà elencata durante un’iterazione for...in?
const sym = Symbol('uniqueKey');const obj = { [sym]: 'symbol value', regularKey: 'regular value'};for (let key in obj) { console.log(key);}Le proprietà indicizzate da Symbol possono avere il proprio flag enumerable, ma for...in e Object.keys() visitano solo le proprietà enumerabili con chiave stringa. In questo esempio, verrà elencata solo regularKey, non la proprietà indicizzata da Symbol.
Quale metodo può essere usato per recuperare tutte le chiavi Symbol di un oggetto?
Il metodo Object.getOwnPropertySymbols() viene usato per recuperare le chiavi di proprietà Symbol proprie di un oggetto.
const sym1 = Symbol('id');const sym2 = Symbol('name');const obj = { [sym1]: 'symbol value', [sym2]: 'another symbol value'};console.log(Object.getOwnPropertySymbols(obj));// [Symbol(id), Symbol(name)]