Comment changer un objet avant l'appel d'une fonction ? Est-ce vraiment possible ?
P粉539055526
P粉539055526 2023-08-30 15:10:19
0
1
374

J'ai un problème js très étrange. J'ai un composant Vue (mais je ne pense pas que Vue soit importante ici). Il possède un attribut de données appelé current_query. Dans la méthode qui répond à l'événement, je souhaite modifier la propriété. Utilisez Lodash ici. Il y a un comportement très étrange. Supposons que this.current_query soit initialement égal à { test : 500 }. Supposons que le paramètre 'field' soit 'test'. En le "désactivant" de current_query, je vais en fait effacer current_query lui-même. très bien. Le problème est que, uniquement lors de l'utilisation de unset, si j'enregistre current_query avant d'appeler unset, j'obtiens un objet vide. Comment se peut-il?

on_applied_option_click(field){ console.log(this.current_query); // donne { test : 500 } (OK) }, // Cliquez pour terminer on_applied_option_click(champ){ console.log(this.current_query); // Ce n'est qu'en utilisant _.unset qu'un objet vide sera donné (??) _.unset(this.current_query, champ); console.log(this.current_query); // Donnera également un objet vide (OK) }, // Cliquez pour terminer

J'ai constaté que si j'utilise _.omit, tout fonctionne correctement :

on_applied_option_click(field){ console.log(this.current_query); // donne { test : 500 } (OK) this.current_query = _.omit(this.current_query, champ); console.log(this.current_query); // Donne un objet vide, ce qui est OK pour le moment }, // Cliquez pour terminer

Pourquoi ? La seule chose que je peux dire, c'est que _.unset modifie l'objet tandis que _.omit crée de nouveaux objets. Cependant, je ne pense pas qu'il soit possible pour _.unset de modifier l'objet avant de l'appeler (???). Je n'ai jamais rien vu de pareil. Quelqu'un a-t-il une bonne explication à ce comportement étrange ?

P粉539055526
P粉539055526

répondre à tous (1)
P粉301523298

N'utilisez pasconsole.log(this.current_query),尝试使用console.log(JSON.stringify(this.current_query))。这样可以可靠地记录this.current_queryl'état au moment de l'enregistrement, plutôt qu'un éventuel état ultérieur.

Cela devrait résoudre le problème de confusion.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!