상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
선풍기를 오래 사용하는 방법에 대해 조언해 주세요.
혼혈의 사회적 격차 해소를 위한 방안은 무엇이가요?
강아지 산책 시 건강한 간식의 예는 무엇인가요?
대출 심사에서 회사의 재무 상태는 얼마나 중요할까요?
대출 심사 중 고객의 직업 안정성을 평가하는 기준은 무엇인가요?
대출한도 증설을 위한 시점 및 기간은?
대출한도 변경을 위한 상담은 어떻게 진행하나요?
서유럽 여행 중 가장 친절한 현지인은 누군가요?
어린이 치과 치료는 아픈가요?
어린이 치과에서 치아의 건강을 유지하는 방법은?
어린이 치과에서 치아 각질 제거 방법은 어떻게 하나요?
어린이 치과와 일반 치과의 차이는 무엇인가요?
Previous
Next
수정하기 - 자바스크립트에서 this 키워드는 무엇을 의미하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 `this` 키워드는 매우 중요한 개념으로, 함수가 호출되는 방식에 따라 그 값이 달라집니다. `this`는 일반적으로 현재 실행 중인 코드의 컨텍스트를 참조하며, 그 컨텍스트는 함수가 어떻게 호출되었는지에 따라 결정됩니다. 아래에서는 `this`의 다양한 사용 사례와 그 의미를 자세히 설명하겠습니다. 1. 전역 컨텍스트에서의 `this` 전역 컨텍스트에서 `this`는 전역 객체를 참조합니다. 브라우저 환경에서는 `this`가 `window` 객체를 가리키고, Node.js 환경에서는 `global` 객체를 가리킵니다. ```javascript console.log(this); // 브라우저에서는 window 객체를 출력 ``` 2. 함수 호출에서의 `this` 일반 함수에서 `this`는 호출된 방식에 따라 다릅니다. - 일반 함수 호출 : 일반 함수로 호출될 경우, `this`는 전역 객체를 가리킵니다. 그러나 strict mode에서는 `undefined`가 됩니다. ```javascript function showThis() { console.log(this); } showThis(); // 전역 객체 (브라우저에서는 window) ``` - 객체 메서드 호출 : 객체의 메서드로 호출될 경우, `this`는 그 메서드가 속한 객체를 가리킵니다. ```javascript const obj = { name: 'Alice', greet: function() { console.log(`Hello, ${this.name}`); } }; obj.greet(); // Hello, Alice ``` 3. 생성자 함수에서의 `this` 생성자 함수에서 `this`는 새로 생성된 객체를 가리킵니다. `new` 키워드를 사용하여 생성자 함수를 호출하면, `this`는 그 생성된 객체를 참조하게 됩니다. ```javascript function Person(name) { this.name = name; } const person1 = new Person('Bob'); console.log(person1.name); // Bob ``` 4. 화살표 함수에서의 `this` 화살표 함수는 `this`를 자신이 정의된 컨텍스트에서 가져옵니다. 즉, 화살표 함수 내부의 `this`는 <a href='https://sangseek.com/sangseeks/외부 함수/ko'>외부 함수</a>의 `this`를 참조하게 됩니다. 이는 일반 함수와의 가장 큰 차이점 중 하나입니다. ```javascript const obj = { name: 'Charlie', greet: function() { const arrowFunc = () => { console.log(`Hello, ${this.name}`); }; arrowFunc(); } }; obj.greet(); // Hello, Charlie ``` 5. `call`, `apply`, `bind` 메서드 <a href='https://sangseek.com/sangseeks/자바스크립트/ko'>자바스크립트</a>에서는 `call`, `apply`, `bind` 메서드를 사용하여 `this`의 값을 명시적으로 설정할 수 있습니다. - call : 첫 번째 인자로 `this`로 사용할 객체를 지정하고, 나머지 인자는 함수의 인자로 전달합니다. ```javascript function greet() { console.log(`Hello, ${this.name}`); } const user = { name: 'Dave' }; greet.call(user); // Hello, Dave ``` - apply : `call`과 유사하지만, 두 번째 인자로 배열을 받아서 함수의 인자로 전달합니다. ```javascript function introduce(greeting) { console.log(`${greeting}, ${this.name}`); } const user = { name: 'Eve' }; introduce.apply(user, ['Hi']); // Hi, Eve ``` - bind : 새로운 함수를 생성하고, 그 함수의 `this`를 특정 객체로 고정합니다. ```javascript const user = { name: 'Frank' }; const greetFrank = greet.bind(user); greetFrank(); // Hello, Frank ``` 6. `this`와 이벤트 핸들러 DOM 이벤트 핸들러에서 `this`는 이벤트가 발생한 요소를 참조합니다. 그러나 화살표 함수를 사용할 경우, `this`는 외부 컨텍스트를 참조하게 됩니다. ```javascript const button = document.getElementById('myButton'); button.<a href='https://sangseek.com/sangseeks/addEventListener/ko'>addEventListener</a>('click', function() { console.log(this); // 클릭된 버튼 요소 }); button.addEventListener('click', () => { console.log(this); // 외부 컨텍스트의 this (예: window) }); ``` 결론 자바스크립트에서 `this`는 함수의 호출 방식에 따라 다르게 동작하는 특성을 가지고 있습니다. 이를 이해하는 것은 자바스크립트의 동작 원리를 깊이 이해하는 데 매우 중요합니다. `this`의 동작 방식은 코드의 흐름과 객체 지향 프로그래밍에서의 메서드 호출에 큰 영향을 미치므로, 개발자는 이를 잘 활용하여 보다 효율적이고 오류 없는 코드를 작성해야 합니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기