cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menukar objek sebelum panggilan fungsi? Adakah ini benar-benar mungkin?

<p>Saya mempunyai masalah js yang sangat pelik. Saya mempunyai komponen Vue (tetapi saya rasa Vue tidak penting di sini). Ia mempunyai atribut data yang dipanggil <code>current_query</code>. Dalam kaedah yang bertindak balas kepada acara, saya ingin mengubah suai harta. Gunakan Lodash di sini. Terdapat satu kelakuan yang sangat pelik. Andaikan <code>this.current_query</code> pada mulanya sama dengan <code>{ ujian: 500 }</code>. Andaikan bahawa parameter <code>'field'</code> ialah <code>'test'</code>. Dengan "menyahtetap" ia daripada <kod>current_query</code>, saya sebenarnya akan mengosongkan current_query itu sendiri. sangat bagus. Masalahnya, hanya apabila menggunakan unset, jika saya log current_query sebelum memanggil unset, saya mendapat objek kosong. Bagaimana ini boleh terjadi? </p> <pre class="brush:php;toolbar:false;">on_applied_option_click(field){ console.log(this.current_query); // memberikan { ujian: 500 } (OK) }, // Klik untuk tamat on_applied_option_click(medan){ console.log(this.current_query); // Hanya apabila menggunakan _.unset, objek kosong akan diberikan (??) _.unset(this.current_query, field); console.log(this.current_query); // Juga akan memberikan objek kosong (OK) }, // Klik untuk menamatkan</pre> <p>Saya mendapati bahawa jika saya menggunakan <code>_.omit</code>, semuanya berfungsi dengan baik: </p> <pre class="brush:php;toolbar:false;">on_applied_option_click(field){ console.log(this.current_query); // memberikan { ujian: 500 } (OK) this.current_query = _.omit(this.current_query, field); console.log(this.current_query); // Berikan objek kosong, yang OK pada masa ini }, // Klik untuk menamatkan</pre> <p>Kenapa? Satu-satunya perkara yang boleh saya katakan ialah _.unset menukar objek manakala _.omit mencipta objek baharu. Walau bagaimanapun, saya rasa tidak mungkin untuk _.unset menukar objek sebelum memanggilnya (???). Tidak pernah melihat perkara seperti ini. Adakah sesiapa mempunyai penjelasan yang baik untuk tingkah laku aneh ini? </p>
P粉539055526P粉539055526459 hari yang lalu427

membalas semua(1)saya akan balas

  • P粉301523298

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

    Jangan gunakan console.log(this.current_query),尝试使用console.log(JSON.stringify(this.current_query))。这样可以可靠地记录this.current_querykeadaan pada masa rakaman, bukannya beberapa keadaan kemudian.

    Ini sepatutnya menyelesaikan isu kekeliruan.

    balas
    0
  • Batalbalas