inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념

자바스크립트 this 4가지와 화살표 함수의 this

질문있습니다 ㅜㅜ

175

jiny

작성한 질문수 23

1

개인 프로젝트를 하다가 질문이 있어서 남깁니다ㅜ
제가 vuePagination 이라는 오픈소스를 사용중에

<Paginate
                    :page-count="totalpage"                  
                    :click-handler="clickCallback"
                    :prev-text="'Prev'"
                    :next-text="'Next'"
                    
                >
                   
                </Paginate>

이것을 보고
methods: {

clickCallback(pageNum) {
            console.log(pageNum);
            console.log(this);
}

}
이렇게 하면 this(Vue컴포넌트)속성을 찍어낼 수 있는데

clickCallback:pageNum=> {
console.log(pageNum);
console.log(this);
}

화살표 함수로 바꿀경우에는 window객체가 나올줄 알았는데 undefined 가 뜹니다

화살표함수가 아닌 일반함수로 콜백함수로 등록하고 this를 사용하면 현재 컨텍스트인 vue 컴포넌트를 가르켜서 속성을 출력할 수 있고
화살표함수인 경우는 현재 컨텍스트가 아닌 바깥의 부모컨텍스트를 참조하기에 window 객체를 출력할줄 알았는데 undefined가 뜨길레 이해가 잘안되서 여쭤봅니다..

그리고 공식문서에는 화살표 함수로 메소드를 정의하면 안된다고 하는데 제가 사용한 라이브러리에서는 사용법이

<script>
export default {
  methods: {
    clickCallback (pageNum) => {
      console.log(pageNum)
    }
  }
}
</script>
이렇게 나와있었는데 다른 문법인건가요 ???

javascript vuejs

답변 1

2

캡틴판교

안녕하세요 진영님, 좋은 질문이네요. 말씀하신 것처럼 뷰 인스턴스 옵션 속성에는 화살표 함수를 사용하면 안됩니다. 그 이유는 말씀하신 공식 문서에 잘 설명이 되어 있구요. 한 가지 첨언 드리자면 화살표 함수인 경우에는 window가 아니라 코드가 실행되는 시점의 상위 스코프를 참조합니다. 그랬을 때 현재 전역으로 객체를 선언한 게 아니라 .vue 파일에서 객체를 선언하였으므로 해당 객체가 될 것 같네요. 

라이브러리에서 화살표 함수를 쓰라고 한 부분은 저도 의도를 잘 모르겠는데.. 해당 이유에 대해서는 그 오픈 소스 쪽 제작자에게 물어봐야 할 것 같습니다 ㅎㅎ

깃 권한 요청 드립니다

0

50

1

깃 권한 신청

0

50

1

깃 권한 요청드립니다.

0

111

1

깃허브 권한 요청 드립니다

0

144

1

깃허브 권한 요청 드립니다

0

161

1

깃허브 권한 요청 드립니다

0

167

1

깃허브 권한 요청 드립니다.

0

154

1

안녕하세요 vue 2.7로 수강하고 있는 학생입니다. 실무에서 최하위 자식의 props와 watch의 관계를 여쭈고자 합니다.

0

208

1

ide 타입추론 기능 사용할 수 없을까요??

0

207

1

컴포넌트 링크는 vue peek 익스텐션 설치가 필수인가요??

0

228

1

Vue3로 진행중입니다

1

338

1

Vue router-link 사용시 같은 url이면

1

506

1

vue3 에러 메세지...

1

670

2

id ="app" 중복

0

271

2

use undefined 에러가 나옵니다.

1

318

2

깃허브 권한 요청드립니다.

1

358

2

권한요청드립니다.

1

299

2

Vue3에서 구글 애드센스 탑재하기

1

437

2

코드가 정상 작동 되는건지 ...

1

303

1

강의에서 api를 따로 빼셨는데 얻는 이점이 뭐죠?

1

243

1

vuex 적용시 질문

1

288

2

라우터 버전이 안맞는데 어떤걸 써야하나요

1

385

2

UserView에 id 속성만 undefined로 넘어오는데 이유를 모르겠습니다..

1

455

2

권한요청 드립니다!

1

275

2