열정가이
366
2019-06-18 10:19:51
2
339

javascript this 질문



var test = 'test11111111';

var Announcement = {
       selectEvent : function(){
		$("#dnis").change( function(){
			
			console.log(this.tset);
		});
	},
}


객체 안에 selectEvent 라는 메서드가 있고, 그 안에 dnis 라는 id 값을 가진 속성을 가져와 change 이벤트를 부여하기 위해 위와 같이 사용했다면, 여기서 this.test에서 사용한 this는 무엇에 바인딩이 되는건가요?

초보개발자라 아직 모든게 미숙합니다 ㅠ

메서드에서 this는 해당 메서드를 호출한 객체에 바인딩되고, 함수에서의 this는 전역 객체에 바인딩되는걸로 알고있는데, 위에서 전역 객체라 생각되어 this를 사용하니 전역 변수로 선언한 test가 읽히지 않습니다.

여기서의 this는 무엇에 바인딩이 되는건가요?

그리고 javascript 에서 객체안에서 다른 메서드가 다른 메서드를 호출할때에는 같은 객체안에 존재하더라도, this를 붙여서 호출해야 되는게 맞나요?


예를들어 위 코드에서 selectEvent 메서드를 Announcement 객체 안의 initialization 이라는 메서드 안에서 호출하고 싶다면 this.selectEvent 와 같이 말이죠.


초보라 많이 부족합니다 ㅠ

도와주세요 ㅠ

0
0
  • 답변 2

  • ksshim86
    1k
    2019-06-18 10:28:38

    this 는 해당 함수가 어떻게 호출되느냐에 따라 다릅니다.

    dnis 아이디를 가진 노드가 change 이벤트가 일어날 때, 함수가 실행될 것이고 그렇다면 dnis의 노드가 this가 되겠네요.


    개발자도구에서 디버깅 걸어서 직접 this 찍어보시면 이해가 잘되실껍니다.

    0
  • 제르맹
    315
    2019-06-18 10:31:06
    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.