메서드 안에서의 함수 질문입니다.
269
작성한 질문수 8
var obj = {
a: 20,
b: function(){
console.log(a);
function c(){
console.log(a);
}
c();
}
}
obj.b();
올바른 질문인지 잘 모르겠습니다만... 이 예제의 코드에서 c 부분이 궁금한데요..
저 c라는 함수의 this는 window라고 이해했는데, 그렇다면 저 c라는 함수는 이미 전역컨텍스트가 실행될 때
실행 문맥의 식별자 (Lexical enviroment) 에 의해서 이미 수집이 되어 있는건가요?
답변 1
1
obj.b 메서드를 호출할 때 obj.b에 대한 실행컨텍스트의 변수 수집 및 this바인딩이 이뤄지듯이
마찬가지로 c함수에 대한 this 바인딩은 c함수를 호출할 때 비로소 이뤄집니다.
c함수에 this가 window(전역객체)로 바인딩되는 이유는...
자바스크립트가 그냥 그렇게 생겼습니다 ㅠ
아무튼 '동적 바인딩'이라는 개념을 잘 생각해 보시기 바랍니다.
this는 '선언될 때'가 아니라, '호출될 때' 정해집니다.
호출되는 시점에 해당 함수를 메소드로써 호출했는지, 함수로써 호출했는지에 따라 달라지는 거에요.
인스턴스에서 prototype 프로퍼티에 직접 접근해야하는 이유
0
73
1
setTimeout 에서 this
0
95
1
2강부터 영상이 나오지 않습니다.
0
190
1
자바스크립트 주석에 이상한 점이 있어서 문의드립니다.
0
235
2
return 문 안에 여러 함수가 존재하는 것이 이해되지 않습니다.
1
274
1
클래스 static 멤버
1
256
1
실행컨텍스트와 스택프레임
2
574
1
프로토타입으로 상속할때 브릿지 사용 이유
0
328
1
호이스팅 관련 질문
1
342
1
책 66p. 예제 3-2 질문입니다.
0
360
1
강의 내용 10:58 캡슐화 질문입니다.
1
405
1
강의 내용 5:10 질문입니다.
1
425
2
전역 공간에서의 this
0
431
2
18:31 addEventListener의 this
1
488
1
outerEnvironmentReference 질문
1
376
1
실행 컨텍스트와 클로저에 대해 질문드립니다.
1
455
1
Object.prototype.constructor의 [[prototype]] ?
1
661
1
함수를 값으로 할당할 때
2
462
1
15:54 'ddd' 사라지는 오류?
4
382
1
프로토타입 getPrototypeOf(instance).constructor(n,a) 질문입니다.
1
410
1
기본형/가변형 질문입니당
0
336
0
선생님 그러면 섹션 0만 봐도 무방한가요!?
0
341
1
Hoisting과 environmentRecord에 관한 질문입니다.
1
295
1
안녕하세요, 데이터 변경 질문입니다.
0
335
1





