Heim  >  Fragen und Antworten  >  Hauptteil

Wie ändere ich ein Objekt vor dem Funktionsaufruf? Ist das wirklich möglich?

<p>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 <code>current_query</code>. 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, <code>this.current_query</code> ist anfänglich gleich <code>{ test: 500 }</code>. Gehen Sie davon aus, dass der Parameter <code>'field'</code> <code>'test'</code> ist. Durch das „Deaktivieren“ von <code>current_query</code> 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? </p> <pre class="brush:php;toolbar:false;">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</pre> <p>Ich habe festgestellt, dass alles gut funktioniert, wenn ich <code>_.omit</code> verwende: </p> <pre class="brush:php;toolbar:false;">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</pre> <p>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>
P粉539055526P粉539055526415 Tage vor393

Antworte allen(1)Ich werde antworten

  • P粉301523298

    P粉3015232982023-08-31 10:43:44

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

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

    Antwort
    0
  • StornierenAntwort