Wie ändere ich ein Objekt vor dem Funktionsaufruf? Ist das wirklich möglich?
P粉539055526
P粉539055526 2023-08-30 15:10:19
0
1
371

Ich habe ein sehr seltsames JS-Problem. Ich habe eine Vue-Komponente (aber ich glaube nicht, dass Vue hier wichtig ist). Es verfügt über ein Datenattribut namens current_query. In der Methode, die auf das Ereignis reagiert, möchte ich die Eigenschaft ändern. Verwenden Sie hier Lodash. Es gibt ein sehr seltsames Verhalten. Angenommen, this.current_query ist anfänglich gleich { test: 500 }. Gehen Sie davon aus, dass der Parameter 'field' 'test' ist. Durch das „Deaktivieren“ von current_query lösche ich tatsächlich current_query selbst. sehr gut. Das Problem besteht nur darin, dass ich bei Verwendung von unset ein leeres Objekt erhalte, wenn ich die aktuelle_Abfrage vor dem Aufruf von unset protokolliere. Wie kann das sein?

on_applied_option_click(field){ console.log(this.current_query); // ergibt { test: 500 } (OK) }, // Zum Beenden klicken on_applied_option_click(field){ console.log(this.current_query); // Nur bei Verwendung von _.unset wird ein leeres Objekt übergeben (??) _.unset(this.current_query, field); console.log(this.current_query); // Gibt auch ein leeres Objekt zurück (OK) }, // Zum Beenden klicken

Ich habe festgestellt, dass alles gut funktioniert, wenn ich _.omit verwende:

on_applied_option_click(field){ console.log(this.current_query); // ergibt { test: 500 } (OK) this.current_query = _.omit(this.current_query, field); console.log(this.current_query); // Geben Sie ein leeres Objekt an, was zu diesem Zeitpunkt in Ordnung ist }, // Zum Beenden klicken

Warum? Das Einzige, was ich sagen kann, ist, dass _.unset das Objekt ändert, während _.omit neue Objekte erstellt. Allerdings glaube ich nicht, dass es _.unset möglich ist, das Objekt zu ändern, bevor es aufgerufen wird (???). So etwas habe ich noch nie gesehen. Hat jemand eine gute Erklärung für dieses seltsame Verhalten?

P粉539055526
P粉539055526

Antworte allen (1)
P粉301523298

不要使用console.log(this.current_query),尝试使用console.log(JSON.stringify(this.current_query))。这样可以可靠地记录this.current_query在记录时的状态,而不是可能之后的某个状态。

这样应该可以解决混淆问题。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!