커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
클로져 함수 호출
JavaScript 문법 종합반 v0
4주차
북마크
송*우
댓글
1
추천
0
조회수
8
조회수
8
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


질문이 두가지가 있습니다.

  1. 하기 코드로 봤을 때 call과 bind로 this를 obj3에 묶고 있는데, call과 bind의 차이가 궁금합니다.
  2. 클로져함수를 호출하는 방법을 좀 모르겠는데 각각의 호출하는 방식마다 왜 콘솔에 저렇게 뜨는지가 궁금합니다.






작성한 코드 및 에러 메세지

var obj1 = {

name: "obj1",

func: function () {

var self = this; //이 부분!**

return function () {

console.log(self.name);

};

},

};


var obj3 = { name: "obj3" };


//그리고 아래랑 위랑은 무슨 차이야? (call, bind)

// //아랫 줄이 func는 되는데 func()는 안되는 이유가 뭐야?

setTimeout(obj1.func().call(obj3), 1000); //콘솔 결과 -> error

setTimeout(obj1.func.call(obj3), 1000); //콘솔 결과 ->obj3

setTimeout(obj1.func.call(obj3)(), 1000); //콘솔 결과 ->error


// 밑에 두개는 ()의 위치가 왜 차이가 나면서 왜 가리키는게 달라져?

setTimeout(obj1.func().bind(obj3), 1000); //콘솔 결과 ->obj1

setTimeout(obj1.func.bind(obj3), 1000); //콘솔 결과 ->아무것도 안뜸

setTimeout(obj1.func.bind(obj3)(), 1000); //콘솔 결과 ->obj3




취소
 공유
취소
댓글 0
댓글 알림
나의얼굴