반응형
- this
- this는 실행 컨텍스트에 따라 그 값이 결정되며, 현재 실행 중인 함수 또는 메서드의 "소유자"를 가리킵니다.
- 전역 컨텍스트에서의 this
- 전역 객체를 가리킴. 브라우저에서는 window
console.log(this); // 브라우저에서는 window 객체를 출력
- 함수 내에서의 this
- 일반 함수에서는 전역 객체
- 엄격 모드에서는 undefined
function regularFunction() { console.log(this); // window 또는 global 객체 } function strictFunction() { 'use strict'; console.log(this); // undefined } regularFunction(); strictFunction();
- 객체의 메서드로 호출될때는 해당 메서드를 호출한 객체에 바인딩됨
- 코드
const obj = { name: 'JavaScript', getName: function() { console.log(this.name); } }; obj.getName(); // 'JavaScript'
- class의 생성자 함수에서는 새로 생성되는 객체를 가리킴
- 코드
function Person(name) { this.name = name; } const person = new Person('John'); console.log(person.name); // 'John'
- 이벤트 핸들러에서의 this는 이벤트를 받는(이벤트가 실행되는) 요소를 가리킴
- 코드
document.getElementById('myButton').addEventListener('click', function() { console.log(this); // 클릭된 버튼 요소 });
- 화살표 함수에서의 this는 일반 함수와는 다르게 this를 자체적으로 바인딩하지 않고, 함수 생성 시점의 실행 context를 상속
- 코드
const obj = { name: 'JavaScript', regularFunction: function() { setTimeout(function() { console.log(this.name); // undefined (전역 객체의 name 속성) }, 100); }, arrowFunction: function() { setTimeout(() => { console.log(this.name); // 'JavaScript' }, 100); } }; obj.regularFunction(); obj.arrowFunction();
반응형
'개발이야기 > 웹개발' 카테고리의 다른 글
[코드잇 스프린트 풀스택 4기] React Virtual DOM (0) | 2024.11.25 |
---|---|
[코드잇 스프린트 풀스택 4기] 렉시컬 스코프(Lexical Scope) (0) | 2024.11.25 |
[코드잇 스프린트 풀스택 4기] 자바스크립트의 var, let, const (0) | 2024.11.25 |
[코드잇 스프린트 풀스택 4기] 브라우저의 동작 원리 (0) | 2024.11.25 |
[코드잇 스프린트 풀스택 4기] 시멘틱 태그란 무엇이며 어떤 장점이 있는가? (0) | 2024.10.27 |