[ES6+] method


메소드

함수처럼 생겼지만 앞에 .이 붙으면 메소드이다.

그리고 .이 붙어있기때문에 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);

위 코드를 해석해보자


  1. 전역 실행컨텍스트 생성

  2. 변수 obj선언 및 호이스팅

  3. 객체생성 / 변수 obj에 객체 주소값 할당

  4. obj.b 메소드 호출 > obj.b 실행컨텍스트 생성

    (function bb의 실행컨텍스트가 생성된다)

  5. this에 obj바인딩

    함수와 메소드의 차이점은 this를 바인딩하느냐 안하느냐인데, 메소드는 this를 바인딩한다.

    .이 붙어있으면 메소드인데, .앞에까지가 this이다. obj.b라면 obj가 this가 된다

  6. this출력

    this를 찍어보면 obj가 출력된다

  7. obj.b 실행컨텍스트 종료

  8. (위와 같은 순서 반복)

  9. 전역 실행컨텍스트 종료



인프런 정재남님의 ‘Javascipt 핵심개념 알아보기 - JS flow’을 듣고 정리 =)




© 2018. by sora

Powered by sora