La position actuelle:Accueil du site>Type de symbole

Type de symbole

2022-07-24 02:45:53Nancym

SymbolType

Symbol(Symbole)- Oui.ECMAScript6Nouveau type de données.Le symbole est la valeur originale,Et l'Instance symbolique est unique、Immuable.Le but du symbole est de s'assurer que les propriétés de l'objet utilisent un identificateur unique,Risque de conflit d'attributs

Définition de la DéclarationSymbolDe plusieurs façons

 let sym = Symbol() let sym1 = Symbol() console.log(sym == sym1) // false let sym2 = Symbol('Les paramètres de chaîne peuvent être passés comme description du symbole') console.log(sym2.description) // Les paramètres de chaîne peuvent être passés comme description du symbole console.log(sym2) // Symbol(Les paramètres de chaîne peuvent être passés comme description du symbole) console.log(sym2.toString()) // Symbol(Les paramètres de chaîne peuvent être passés comme description du symbole) let sym = Symbol.for('Inscription globale') let sym1 = Symbol.for('Inscription globale') console.log(sym == sym1) // true console.log(Symbol.keyFor(sym)) // Inscription globale console.log(Symbol.keyFor(sym1)) // Inscription globale 

UtiliserSymbol Résoudre le problème du couplage des chaînes

Dans un objet, si keyNom répété,Derrière.keyVa mettre devantkeyÉcraser,UtiliserSymbol Définition de type valeur unique ,Résoudre le problème de la couverture


      let user1 = {
        name: 'lisi',
        key: Symbol(),
      }
      let user2 = {
        name: 'lisi',
        key: Symbol(),
      }
      let grade = {
        [user1.key]: { js: 90, css: 100 },
        [user2.key]: { js: 20, css: 40 },
      }
      console.log(grade) // Symbol(): {js: 90, css: 100}
      // Symbol(): {js: 20, css: 40}
      console.log(grade[user2.key]) // { js: 20, css: 40 }


Symbol Utilisation dans les tampons


class Cache {
        static data = {}
        static set(name, value) {
          this.data[name] = value
        }
        static get(name) {
          return this.data[name]
        }
      }
      let user = {
        name: 'apple',
        key: Symbol(),
      }
      let cart = {
        name: 'apple',
        key: Symbol(),
      }
      Cache.set(user.key, user)
      Cache.set(cart.key, cart)
      console.log(Cache.get(user.key))


Propriétés étendues et protection des propriétés de l'objet

UtiliserSymbolDéfinitionkeyNe sera pasfor..inEtfor..ofTraverser,Adoptionfor ..of Reflect.ownKeys() Qui peut traverser l'objet SymbolPropriétés


      let sym = Symbol('C'est unSymbolType')
      let hd = {
        name: 'doudun',
        [sym]: 'doudounnnn',
      }
      for (const key in hd) {
        console.log(key) // name
      }
      for (const key of Object.getOwnPropertySymbols(hd)) {
        console.log(key) // Symbol(C'est unSymbolType)
      }
      for (const key of Reflect.ownKeys(hd)) {
        console.log(key) // name Symbol(C'est unSymbolType)
      }

Mentions de copyright
Auteur de cet article [Nancym],Réimpression s’il vous plaît apporter le lien vers l’original, merci
https://fra.chowdera.com/2022/205/202207240244568276.html

Recommandé au hasard