상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트의 this 키워드는 무엇을 의미하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 `this` 키워드는 매우 중요한 개념으로, 코드의 실행 컨텍스트에 따라 다르게 해석됩니다. `this`는 객체 지향 프로그래밍에서 객체를 참조하는 데 사용되며, 자바스크립트에서는 함수가 호출되는 방식에 따라 `this`의 값이 결정됩니다. 이를 이해하기 위해서는 다양한 상황에서 `this`가 어떻게 작동하는지를 살펴봐야 합니다. 1. 전역 컨텍스트에서의 `this` 전역 컨텍스트에서 `this`는 전역 객체를 참조합니다. 브라우저 환경에서는 `this`가 `window` 객체를 가리킵니다. 예를 들어: ```javascript console.log(this); // window 객체를 출력 ``` 2. 함수 호출에서의 `this` 함수 내에서 `this`는 함수가 호출되는 방식에 따라 다르게 결정됩니다. - 일반 함수 호출 : 일반 함수로 호출될 때 `this`는 전역 객체를 참조합니다. (strict mode에서는 `undefined`) ```javascript function showThis() { console.log(this); } showThis(); // window 객체 (strict mode가 아닐 경우) ``` - 메서드 호출 : 객체의 메서드로 호출될 때 `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. 화살표 함수에서의 `this` 화살표 함수는 일반 함수와는 다르게 `this`를 <a href='https://sangseek.com/sangseeks/lexically/ko'>lexically</a>(어휘적으로) 바인딩합니다. 즉, 화살표 함수가 정의된 위치에서 `this`의 값을 가져옵니다. 따라서 화살표 함수 내에서 `this`는 외부 컨텍스트의 `this`를 참조합니다. ```javascript const obj = { name: 'Charlie', greet: function() { const innerFunc = () => { console.log(this.name); }; innerFunc(); } }; obj.greet(); // 'Charlie' ``` 5. `call`, `apply`, `bind` 메서드 자바스크립트에서는 `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 person = { name: 'Eve' }; introduce.apply(person, ['Hello']); // 'Hello, my name is Eve' ``` - bind : 새로운 함수를 생성하고, `this`를 고정하여 해당 함수를 호출할 수 있습니다. ```javascript const person = { name: 'Frank' }; const greetFrank = greet.bind(person); greetFrank(); // 'Frank' ``` 6. strict mode에서의 `this` 자바스크립트의 strict mode에서는 `this`가 `undefined`로 설정됩니다. 즉, 함수가 호출될 때 `this`가 전역 객체를 참조하지 않도록 강제합니다. ```javascript 'use strict'; function showThis() { console.log(this); } showThis(); // undefined ``` 결론 자바스크립트의 `this` 키워드는 함수 호출 방식에 따라 다르게 해석되며, 이를 이해하는 것은 자바스크립트 프로그래밍에서 매우 중요합니다. `this`의 동작 방식은 코드의 흐름과 객체 지향 프로그래밍의 개념을 이해하는 데 필수적이며, 다양한 상황에서 `this`를 올바르게 사용하는 것은 자바스크립트 개발의 핵심입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기