vue를 공부하면서 다음과 같은 설명글을 보았다.
왜 this가 vm 자신인가? 라는 의문이 생김.
출처: https://joshua1988.github.io/web-development/vuejs/vuejs-tutorial-for-beginner/
var vm = new Vue({
data: {
a: 1
},
created: function () {
// this 는 vm 을 가리킴
console.log('a is: ' + this.a)
}
})
실제로 구성해보니 정말 그랬더라.
/*방법1*/function A(){console.log(this);}new A(); // this는 A자신A(); // this는 Window/*방법2*/function A(args){args.c();}new A({a: 1,b: this, // this는 Windowc: function (){console.log(this); // this는 {a: 1, b: Window, c: ƒ} 왜???????}})
this는 실행되는 위치에서 정해지는데, b는 { } 객체 생성시 바로 Window가 정해졌고(아직까진 Window 영역이었음.),
c는 new A 객체 생성시 function 안에서 c function이 호출되면서, 그때 정해지므로 A 자신이 된 것 같다.
'웹 > javascript' 카테고리의 다른 글
PWA 프로그레시브웹앱 (0) | 2018.07.19 |
---|---|
날짜 함수 (0) | 2018.07.05 |
chrome console 기능 (0) | 2018.05.22 |
NaN !== NaN (0) | 2018.05.22 |
typeof, instanceof (0) | 2018.05.20 |