-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
안녕하세요
21.05.04 17:34 작성 조회수 106
1
안녕하세요 강사님.
수업 즐겁게 잘 듣고 있습니다.
this에 관해 여쭙고 싶은게 있습니다.
function a() {
var point = 100;
function b() {
console.log(this);
}
b();
}
a();
이 코드에서는 this가 window로 나오는 이유를 알고 싶습니다.
var a = {
point: 100,
b: function () {
console.log(this);
},
};
a.b();
이 코드에서는 b 앞의 오브젝트가 있기에 this가 a를
가리키는 것은 이해하였습니다.
그렇다면 위와 같은 코드에서 a 내부의 point를 활용하기
위해서는 클로저를 이용하거나 bind로 a를 묶어주는
방법을 사용해야 하나요??
오브젝트.함수 와 같이 오브젝트가 없다면 함수 내부에서
실행되더라도 this가 window를 가리키는건지 여쭙고
싶습니다. 강의를 많이 돌려보았는데 this는 어려운 것
같습니다 ㅜㅜ
답변을 작성해보세요.
0
김영보
지식공유자2021.05.04
코드에서는 this가 window로 나오는 이유를 알고 싶습니다.
function a() {
var point = 100;
function b() {
console.log(this);
}
b();
}
위 코드는 우선 "use strict"를 작성하지 않았습니다. "use strict"를 작성하면 window가 아니라 undefined가 출력됩니다.
위 코드는 아래와 같으므로 this가 window 오브젝트를 참조하게 됩니다.
window.a = function(){
function b() {
console.log(this);
}
b();
};
window.a();
---------------------
var a = {
point: 100,
b: function () {
console.log(this);
},
};
a.b();
그렇다면 위와 같은 코드에서 a 내부의 point를 활용하기 위해서는 클로저를 이용하거나 bind로 a를 묶어주는 방법을 사용해야 하나요??
==> 아래 처럼 사용합니다. a.b() 형태로 호출하면 b()에서 this가 a를 참조하므로 this.point로 값을 구할 수 있습니다.
console.log(this.point);
------------------
비기너 강좌를 등록하셨네요. 그러면 여기서 진도를 나가지 말고 비기너를 다시 처음부터 코딩하면서 들으시기 바랍니다. 반드시 코딩을 해야 합니다. 느릴 것 같지만 느리지 않습니다. 기반이 튼튼해야 건물을 높게 지을 수 있습니다.
답변 1