Romantic Developer : )
(Javascript) 자바스크립트 심화 (7) this ! 본문
(Javascript) 자바스크립트 심화 (7) this !
Romantic_Developer 2018. 7. 20. 17:00안녕하세요~! 영감을 주는 개발자 방민방민입니다.
오늘은 자바스크립트에서 THIS 의 활용에 대해서 알아보고자 합니다.
'이것' 이라고 번역되는 this 는 하나이지만 어느위치에서 어떻게 쓰이느냐에 따라서 다양한 값을 가질 수 있습니다. 그렇기 때문에 이 this 에 대한 정확한 개념을 인지하고 가야만 합니다.
지금부터 바로 this 에 대한 학습을 시작하도록 하겠습니다!!!
1. 함수 호출에서의 this !
기본적으로 this가 갖고있는값을 이해하기위하여 아래의 예제를 먼저 실행해 보겠습니다.
function func(){ if(window === this){ alert("window===this"); } } func();
여기서 window 는 전역에 걸쳐 모든 변수와, 함수등을 속성으로 갖는 전역객체를 의미합니다.
만약 위의 함수에서 this 가 전역객체인 window 와 같다면 HTML 은 "window === this" 메시지를 출력할 것입니다. 결과는 아래와 같습니다.
이 예제를 통해 기본적인 함수 호출에서 this 는 전역 객체 window 의 값을 갖고 있다는 것을 확인 할 수 있습니다.
2. 메소드 호출에서의 this !
메소드 내부에서 호출되는 this 의 값을 알아보기 위해서 아래의 예제를 실행해 보겠습니다.
var o = { func : function(){ if(o===this){ alert("o===this"); } } } o.func();
위의 예제는 아래의 결과를 출력합니다.
이경우의 this 는 소속되어있는 객체 o와 같은 값을 가지고 있습니다.
3. 생성자에서의 this !
생성자를 통해 새로운 객체를 만들게 되었을때는 this 가 어떤 의미를 가지게 될까요? 아래 예제를 보도록 하겠습니다.
var funcThis = null; function Func(){ funcThis = this; } var o1 = Func(); if(funcThis === window){ alert("window"); } var o2 = new Func(); if(funcThis===o2){ alert("o2") }
이 경우 알림창은 window 와 o2 를 모두 출력합니다. 위의 o1의 경우 new 없이 함수를 호출하여 funcThis에 this 를 넣은 형태이기 때문에 위에서 배운것처럼 함수호출에서의 경우 this 는 window 를 갖게 됩니다.
o2 의 경우에는 Func()라는 함수를 new 를 통해 생성자로 사용하였고 이때, 생성자를 통해 새롭게 생성된 객체 내부에서 동작하는 this 는 위에 2번에서 배운것과 같이 소속된 객체 o2를 가르키게 됩니다.
오늘은 자바스크립트에서 동작하는 this 에 대하여 알아보았습니다.
this 는 마치 카멜레온처럼 그 위치가 어디에서 쓰이느냐에 따라 그 내용이 수시로 바뀝니다.
프로그래밍을 아주 유연하게 만들어주는 this 임에는 분명하지만 그 사용에 있어 아주 명확한 확신을 가져야할 필요가 있습니다.
지금까지 영감을 주는 개발자 방민방민이었습니다. 감사합니다 :)
'Romantic Developer > JavaScript' 카테고리의 다른 글
(Web JavaScript) 웹 자바스크립트 DOM (8) 속성 API (0) | 2018.07.22 |
---|---|
(Javascript) 자바스크립트 심화 (8) 상속 (0) | 2018.07.21 |
(Javascript) 자바스크립트 심화 (6) 객체의 생성자 (0) | 2018.07.19 |
(Javascript) 자바스크립트 심화 (5) 함수의 색다른 호출 (0) | 2018.07.18 |
(Javascript) 자바스크립트 심화 (4) arguments (0) | 2018.07.17 |