상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
할랄푸드를 통해 행복 찾기: 7가지 비결
지하철은 선택이 아닌 필수, 5가지 이유!
계란으로 겨울철 건강 챙기기 5가지
"소개팅, 서로의 마음을 열어주는 4가지 방법"
봉사활동, 공동체의 힘을 알리는 8가지 방법
상비약으로 긴급 상황에 대비하는 법 5가지
일상에서 꼭 필요한 상비약 8가지
인도 음식: 특별한 날을 기념하는 8가지 추천
소화불량의 9가지 심각한 합병증, 경각심을 가져야 할 사항!
"랍스터 사시는 법: 5가지 체크리스트!"
"랍스터와 어울리는 디져트: 5가지 달콤한 아이디어!"
"랍스터와 제철 식자재의 만남: 7가지 레서피!"
Previous
Next
수정하기 - 크롬에서 자바스크립트의 this 키워드를 이해하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 `this` 키워드는 매우 중요한 개념으로, 함수가 호출되는 방식에 따라 그 값이 달라집니다. `this`는 객체의 맥락(context)을 나타내며, 어떤 객체가 메서드를 호출했는지에 따라 그 값이 결정됩니다. 크롬과 같은 웹 브라우저에서 자바스크립트를 실행할 때 `this` 키워드를 이해하는 것은 매우 중요합니다. 아래에서 `this`의 다양한 사용 사례와 그 동작 방식을 자세히 설명하겠습니다. 1. 전역 컨텍스트에서의 `this` 전역 컨텍스트에서 `this`는 전역 객체를 참조합니다. 브라우저 환경에서는 전역 객체가 `window`입니다. 따라서 전역 <a href='https://sangseek.com/sangseeks/스코프/ko'>스코프</a>에서 `this`를 사용하면 `window` 객체를 가리킵니다. ```javascript console.log(this); // window 객체를 출력 ``` 2. 함수 내에서의 `this` 일반 함수 내에서 `this`는 호출된 방식에 따라 다르게 동작합니다. - 일반 함수 호출 : 일반 함수로 호출할 경우, `this`는 전역 객체를 참조합니다. (strict mode에서는 `undefined`) ```javascript function showThis() { console.log(this); } showThis(); // window 객체 (strict mode에서는 undefined) ``` - 메서드 호출 : 객체의 메서드로 호출할 경우, `this`는 그 메서드를 호출한 객체를 참조합니다. ```javascript const obj = { name: 'Alice', greet: function() { console.log(this.name); } }; obj.greet(); // 'Alice' ``` 3. 생성자 함수에서의 `this` 생성자 함수에서 `this`는 새로 생성된 객체를 참조합니다. `new` 키워드를 사용하여 생성자 함수를 호출하면, `this`는 그 새 객체를 가리킵니다. ```javascript function Person(name) { this.name = name; } const person1 = new Person('Bob'); console.log(person1.name); // 'Bob' ``` 4. <a href='https://sangseek.com/sangseeks/화살표 함수/ko'>화살표 함수</a>에서의 `this` 화살표 함수는 `this`를 자신이 정의된 외부 스코프에서 가져옵니다. 즉, 화살표 함수 내에서의 `this`는 일반 함수와 다르게 동작합니다. ```javascript const obj = { name: 'Charlie', greet: function() { const innerFunc = () => { console.log(this.name); }; innerFunc(); } }; obj.greet(); // 'Charlie' ``` 5. `call`, `apply`, `<a href='https://sangseek.com/sangseeks/bind/ko'>bind</a>` 메서드 `this`의 값을 명시적으로 설정할 수 있는 방법도 있습니다. `call`, `apply`, `bind` 메서드를 사용하여 `this`의 값을 지정할 수 있습니다. - call : 첫 번째 인자로 `this`로 사용할 객체를 전달합니다. ```javascript function greet() { console.log(this.name); } const obj = { name: 'David' }; greet.call(obj); // 'David' ``` - apply : `call`과 유사하지만, 두 번째 인자로 배열 형태의 인자를 받습니다. ```javascript function introduce(greeting) { console.log(`${greeting}, my name is ${this.name}`); } const obj = { name: 'Eve' }; introduce.apply(obj, ['Hello']); // 'Hello, my name is Eve' ``` - bind : 새로운 함수를 반환하며, `this`를 고정합니다. ```javascript const obj = { name: 'Frank' }; const boundGreet = greet.bind(obj); boundGreet(); // 'Frank' ``` 6. `this`와 이벤트 핸들러 DOM 이벤트 핸들러에서 `this`는 이벤트가 발생한 요소를 참조합니다. ```html <button id="myButton">Click me</button> <script> document.getElementById('myButton').addEventListener('click', function() { console.log(this); // <button id="myButton">Click me</button> }); </script> ``` 결론 자바스크립트에서 `this` 키워드는 함수의 호출 방식에 따라 다르게 동작합니다. 전역 컨텍스트, 메서드 호출, 생성자 함수, 화살표 함수, 그리고 이벤트 핸들러 등 다양한 상황에서 `this`의 의미를 이해하는 것이 중요합니다. 이러한 개념을 잘 이해하면 자바스크립트 코드를 작성하고 디버깅하는 데 큰 도움이 될 것입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기