import{defineComponent}from'vue'exportdefaultdefineComponent({name:'Test',setup(){return{one,two}}})functionone(){console. log(this)//<--프록시{}two()}functiontwo(){co">
84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
아래 Vue 3의 간단한 구성요소 예를 살펴보세요.
이유를one()函数调用two()函数时,this在two()函数中是undefined。两个函数都在setup()中返回,所以我期望它们都能访问this부터 이해하려고 노력 중입니다.
one()
two()
this
undefined
setup()
그런데two()函数中获取对组件实例this에 있는 인용문은 어때요?
Vue는 여전히 JavaScript의 규칙을 따라야 한다고 생각합니다. 이벤트 핸들러가 호출되는 경우 일반적으로 이벤트를 수신하는 객체의 컨텍스트에서 발생합니다. 이 경우에는one()被绑定到元素的Proxy,并且this绑定到Proxy.
Proxy
그러나two()被特别地调用没有上下文(即:two()而不是someobject.foo())。这意味着this는 정의되지 않습니다.
someobject.foo()
저는 Vue에 대해 잘 알지는 못하지만 자동으로 메소드를 바인딩하지 않으므로 사용하지 않는 것에 대해 비용을 지불할 필요가 없다고 생각합니다.
기본 함수로 호출되는 대신one()中this已正确绑定,你实际上可以将two()作为this의 메서드 호출로 인해:
Vue는 여전히 JavaScript의 규칙을 따라야 한다고 생각합니다. 이벤트 핸들러가 호출되는 경우 일반적으로 이벤트를 수신하는 객체의 컨텍스트에서 발생합니다. 이 경우에는
one()
被绑定到元素的
Proxy
,并且this
绑定到Proxy
.그러나
two()
被特别地调用没有上下文(即:two()
而不是someobject.foo()
)。这意味着this
는 정의되지 않습니다.저는 Vue에 대해 잘 알지는 못하지만 자동으로 메소드를 바인딩하지 않으므로 사용하지 않는 것에 대해 비용을 지불할 필요가 없다고 생각합니다.
기본 함수로 호출되는 대신
으아악one()
中this
已正确绑定,你实际上可以将two()
作为this
의 메서드 호출로 인해: