○ 노드에서의 this
잠깐 require를 다루기 전에, 참고 삼아 this에 대해서 다루어보도록 하겠습니다. 우선 노드가 아닌 기본 Javascript 학습 단계에서 최상위 스코프에서의 this에 대해서 다루었습니다. 그때는 이해가 가지 않았던 부분이 지금에 와서 어느 정도 풀리는 것 같네요.
위 아티클의 초반 내용을 통해서 Javascript의 전역 객체에 대해서 확인했습니다. 이번 아티클 내용과 뒤섞여 헷갈릴 수 있으니 하나씩 정리해 보겠습니다.
· 일반 브라우저에서의 전역 객체는 window, 노드에서의 전역 객체는 global이다.
· 함수 선언문 내부에서의 this는 전역 객체에 바인딩된다. 즉 브라우저에서는 window, 노드에서는 global이다.
· 노드에서 특징적인 부분은, 최상위 스코프에서의 this는 global이 아닌 module.exports(또는 exports)를 가리킨다.
세 번째 항목이 조금 규칙을 벗어납니다. 즉, 최상위 스코프에서 this를 출력했을 때 브라우저처럼 window, 즉 전역 객체인 global이 나올 것 같았지만 아니라는 의미죠? 특징적인 부분이니, 잘 익혀두도록 하겠습니다. 실제로 코드 레벨에서 이 this에 대한 바인딩을 확인해 보겠습니다.
console.log(this);
console.log(this === module.exports);
console.log(this === exports);
function thisExample(){
console.log('function', this === exports, this === global);
}
thisExample();
/* 출력
{}
true
true
function false true
*/
최상위 스코프에서 this는 module.exports에 바인딩되고, 함수 선언문 내부에서는 브라우저에서와 마찬가지로 전역 객체인 global에 바인딩 됩니다. 예외적인 내용들이 조금 등장하는 편이었으니, 잘 기억해 두고 다음으로 넘어가겠습니다. 참고로 이 global은 console과 더불어 대표적인 노드의 내장 객체로 사용되기 때문에 후속 아티클에서 따로 상세하게 살펴보도록 하겠습니다.
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : ECMAScript 1 (0) | 2024.03.21 |
---|---|
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : CommonJS 5 [require 1] (0) | 2024.03.20 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : CommonJS 3 (0) | 2024.03.16 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : CommonJS 2 (0) | 2024.03.15 |
4. Node 기능 살펴보기 (2) - 모듈 사용하기 : CommonJS 1 (2) | 2024.03.13 |