찾다

 >  Q&A  >  본문

Vue 3 함수에서 "this"가 정의되지 않은 것으로 정의된 이유는 무엇입니까?

아래 Vue 3의 간단한 구성요소 예를 살펴보세요.

으아악

이유를 one()函数调用two()函数时,thistwo()函数中是undefined。两个函数都在setup()中返回,所以我期望它们都能访问this부터 이해하려고 노력 중입니다.

그런데 two()函数中获取对组件实例this에 있는 인용문은 어때요?

P粉057869348P粉057869348462일 전821

모든 응답(1)나는 대답할 것이다

  • P粉776412597

    P粉7764125972023-11-07 00:01:40

    Vue는 여전히 JavaScript의 규칙을 따라야 한다고 생각합니다. 이벤트 핸들러가 호출되는 경우 일반적으로 이벤트를 수신하는 객체의 컨텍스트에서 발생합니다. 이 경우에는 one()被绑定到<a>元素的Proxy,并且this绑定到Proxy.

    그러나 two()被特别地调用没有上下文(即:two()而不是someobject.foo())。这意味着this는 정의되지 않습니다.

    저는 Vue에 대해 잘 알지는 못하지만 자동으로 메소드를 바인딩하지 않으므로 사용하지 않는 것에 대해 비용을 지불할 필요가 없다고 생각합니다.

    기본 함수로 호출되는 대신 one()this已正确绑定,你实际上可以将two()作为this의 메서드 호출로 인해:

    으아악

    회신하다
    0
  • 취소회신하다