Symbol come chiavi degli oggetti
Usi i symbol per proprietà senza collisioni.
Symbol come chiavi degli oggetti è una lezione JavaScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento JavaScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso JavaScript Academy include 4 lezioni in totale.
I simboli come chiavi
Un simbolo può essere usato come chiave di proprietà di un oggetto. Poiché ogni simbolo è univoco, una proprietà di questo tipo non può entrare accidentalmente in conflitto con alcuna chiave stringa.
const id = Symbol("id")
const user = {}
user[id] = 123
console.log(user[id])Chiavi di simbolo calcolate
Per usare un simbolo come chiave in un oggetto letterale, lo racchiuda tra parentesi quadre come nome di proprietà calcolato.
const id = Symbol("id")
const user = {
name: "Ann",
[id]: 99
}
console.log(user[id])Leggere una proprietà simbolo
Deve conservare un riferimento allo stesso simbolo per leggere la relativa proprietà. Senza quel riferimento, il valore è di fatto nascosto.
const secret = Symbol("secret")
const obj = { [secret]: "hidden" }
console.log(obj[secret])Non enumerabili in for-in
Le chiavi simbolo vengono ignorate da un ciclo for-in. In questo modo le proprietà simbolo restano escluse dall'iterazione ordinaria.
const tag = Symbol("tag")
const obj = { a: 1, b: 2, [tag]: 3 }
for (const key in obj) {
console.log(key)
}Ignorate da Object.keys
Object.keys restituisce solo chiavi stringa, quindi anche le proprietà con chiavi simbolo ne vengono escluse.
const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
console.log(Object.keys(obj))Nascosti da JSON
JSON.stringify ignora completamente le chiavi simbolo, che quindi non compaiono mai nell'output serializzato. Questo le rende utili per i metadati interni.
const meta = Symbol("meta")
const obj = { name: "Bo", [meta]: "internal" }
console.log(JSON.stringify(obj))Trovare le chiavi simbolo
Per elencare le chiavi simbolo, usi Object.getOwnPropertySymbols, che restituisce un array delle proprietà simbolo di un oggetto.
const tag = Symbol("tag")
const obj = { a: 1, [tag]: 2 }
const syms = Object.getOwnPropertySymbols(obj)
console.log(syms.length)Evitare conflitti tra nomi
Le chiavi simbolo consentono a librerie diverse di aggiungere proprietà allo stesso oggetto senza rischiare di sovrascriversi, poiché i rispettivi simboli sono diversi.
const libA = Symbol("data")
const libB = Symbol("data")
const shared = {}
shared[libA] = 1
shared[libB] = 2
console.log(shared[libA], shared[libB])Chiavi simbolo e spread
L'operatore spread degli oggetti copia anche le chiavi simbolo, a differenza di for-in e Object.keys; tenga quindi presente che vengono trasferite durante la clonazione.
const tag = Symbol("tag")
const src = { a: 1, [tag]: 2 }
const copy = { ...src }
console.log(copy[tag])Memorizzare dati simili a privati
Le chiavi simbolo offrono una forma limitata di privacy: i dati sono accessibili solo al codice che possiede il simbolo e restano esclusi dai normali elenchi di proprietà.
const balance = Symbol("balance")
function makeAccount() {
const acct = {}
acct[balance] = 100
return { acct: acct, key: balance }
}
const a = makeAccount()
console.log(a.acct[a.key])Eliminare proprietà simbolo
Rimuove una proprietà simbolo come qualsiasi altra proprietà, usando l'operatore delete con il riferimento al simbolo.
const tag = Symbol("tag")
const obj = { [tag]: 5 }
delete obj[tag]
console.log(obj[tag])Verifica rapida
Verifichi la Sua conoscenza delle chiavi simbolo.
Riepilogo
Riepilogo: i simboli creano chiavi di oggetto sicure e nascoste.
- Usi le parentesi quadre per le chiavi simbolo calcolate
- Vengono ignorati da for-in, Object.keys e JSON
- Vengono elencati tramite Object.getOwnPropertySymbols
- Sono ideali per metadati privi di conflitti
const k = Symbol("k")
const o = { [k]: 7 }
console.log(o[k])Domande Frequenti
La lezione «Symbol come chiavi degli oggetti» è gratuita?
Sì — il testo completo di «Symbol come chiavi degli oggetti» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso JavaScript Academy, passa a CoddyKit PRO. Il corso JavaScript Academy include 4 lezioni in totale.
Cosa imparerò in «Symbol come chiavi degli oggetti»?
Usi i symbol per proprietà senza collisioni. Eserciti JavaScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare JavaScript Academy?
Non è richiesta alcuna esperienza precedente. JavaScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Symbol come chiavi degli oggetti»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione JavaScript Academy?
Sì. Ogni lezione JavaScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Creare Symbol univoci
- Symbol come chiavi degli oggetti
- Il registro globale dei Symbol
- Symbol well-known