[ES6+] method
in JavaScript
메소드
함수처럼 생겼지만 앞에 .이 붙으면 메소드이다.
그리고 .이 붙어있기때문에 this와 바인딩할 수 있다
var obj = {
a:1,
b:function bb(){
console.log(this);
},
c: function(){
console.log(this.a);
}
};
obj.b();
obj.c();
console.dir(obj.b);
console.dir(obj.c);
위 코드를 해석해보자
전역 실행컨텍스트 생성
변수 obj선언 및 호이스팅
객체생성 / 변수 obj에 객체 주소값 할당
obj.b 메소드 호출 > obj.b 실행컨텍스트 생성
(function bb의 실행컨텍스트가 생성된다)
this에 obj바인딩
함수와 메소드의 차이점은 this를 바인딩하느냐 안하느냐인데, 메소드는 this를 바인딩한다.
.이 붙어있으면 메소드인데, .앞에까지가 this이다. obj.b라면 obj가 this가 된다
this출력
this를 찍어보면 obj가 출력된다
obj.b 실행컨텍스트 종료
(위와 같은 순서 반복)
전역 실행컨텍스트 종료
인프런 정재남님의 ‘Javascipt 핵심개념 알아보기 - JS flow’을 듣고 정리 =)