함수 호출 전에 객체를 변경하는 방법은 무엇입니까? 이것이 정말로 가능합니까?
P粉539055526
P粉539055526 2023-08-30 15:10:19
0
1
423
<p>매우 이상한 js 문제가 있습니다. Vue 구성요소가 있습니다(그러나 여기서는 Vue가 중요하지 않다고 생각합니다). 여기에는 <code>current_query</code>라는 데이터 속성이 있습니다. 이벤트에 응답하는 메서드에서 속성을 수정하고 싶습니다. 여기서 Lodash를 사용하세요. 매우 이상한 동작이 있습니다. <code>this.current_query</code>가 초기에 <code>{ test: 500 }</code>와 같다고 가정합니다. <code>'field'</code> 매개변수가 <code>'test'</code>라고 가정합니다. <code>current_query</code>에서 "설정을 해제"하면 실제로 current_query 자체가 지워집니다. 매우 좋은. 문제는 unset을 사용할 때만 unset을 호출하기 전에 current_query를 기록하면 빈 개체를 얻는다는 것입니다. 어떻게 이럴 수있어? </p> <pre class="brush:php;toolbar:false;">on_applied_option_click(field){ console.log(this.current_query); // { test: 500 } 제공 (OK) }, // 종료하려면 클릭하세요. on_applied_option_click(필드){ console.log(this.current_query); // _.unset을 사용할 때만 빈 객체가 제공됩니다(??) _.unset(this.current_query, 필드); console.log(this.current_query); // 빈 객체도 제공합니다(OK). }, // 종료하려면 클릭하세요</pre> <p><code>_.omit</code>를 사용하면 모든 것이 잘 작동하는 것으로 나타났습니다. </p> <pre class="brush:php;toolbar:false;">on_applied_option_click(field){ console.log(this.current_query); // { test: 500 } 제공 (OK) this.current_query = _.omit(this.current_query, 필드); console.log(this.current_query); // 지금은 괜찮지만 빈 객체를 제공합니다. }, // 종료하려면 클릭하세요</pre> <p>왜요? 내가 말할 수 있는 유일한 것은 _.unset이 객체를 변경하는 반면 _.omit는 새로운 객체를 생성한다는 것입니다. 그러나 _.unset이 개체를 호출하기 전에 개체를 변경하는 것은 불가능하다고 생각합니다(???). 이런 것을 본 적이 없습니다. 이 이상한 행동에 대해 잘 설명할 수 있는 사람이 있나요? </p>
P粉539055526
P粉539055526

모든 응답(1)
P粉301523298

나중에 가능한 상태보다는 녹음 당시의 상태를 console.log(this.current_query),尝试使用console.log(JSON.stringify(this.current_query))。这样可以可靠地记录this.current_query사용하지 마세요.

이렇게 하면 혼동 문제가 해결될 것입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿