javascript-tutorial / javascript-tutorial/en.javascript.info
Use Symbol to get a secure separation
Nessuno ha ancora preso questa issue.
- Lingua principale
- HTML
- Stelle
- 25.5k
- Fork
- 4k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
This affects: https://javascript.info/mixins
The example uses a wired underline hack to separate the storage used by the condiment object being mixed into the mixture object.
Things get more secure and much simpler, if you think about the condiment as a function returning the object to mix in. Then you can use Symbol to generate a unique identifier, which can be used by the condiment to access its own storage.
function mixin(mixture, condiment) {
let self = Symbol('self')
mixture[self] = {}
Object.assign(mixture, condiment(self))
}
function events(self) {
return {
on(event, react) {
this[self][event] = react
},
off(event) {
delete this[self][event]
},
trigger(event, ...args) {
this[self][event](...args)
}
}
}
class Menu {
choose(value) {
this.trigger("select", value)
}
}
mixin(Menu.prototype, events)
var menu = new Menu()
menu.on("select", value => console.log("selected:", value))
menu.choose("123")
Also, if you use already the ellipsis syntax, you can use it in both cases instead of apply.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Apri l’articolo sui mixin all’indirizzo https://javascript.info/mixins e individua l’esempio che utilizza un separatore di archiviazione basato sul carattere di sottolineatura. Confrontalo con l’esempio proposto basato su Symbol e con il suggerimento sulla sintassi dei puntini di sospensione; il lavoro è completato quando l’articolo riflette i miglioramenti richiesti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- javascript
- Ambito
- documentation
- Tipo di issue
- Documentazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 55/100