Nodejs – this란 (브라우저와 차이점)

class 내에서의 this는 클래스 자신을 의미하고, 함수안에서 this는 global 객체를 의미한다.

클래스 안도 아니고 함수 안도 아닌 this는 어떻게 노출될까 ? {}로 노출된다.

브라우저에서는 밖에서 쓰이는 this는 글로벌 객체를 가리키나, nodejs 에서 외부에서 호출되는 this는 모듈에 있는 exports를 가리키고 있다.

function hello(){
    console.log(this);
    console.log(this === global);
}

hello();

class A {
    constructor(num){
        this.num = num;
    }
    
    memberFunction(){
        console.log('----------class---------')
        console.log(this);
        console.log(this === global);
    }
}

const a = new A(1);
a.memberFunction();

console.log('--- global scope ---');
console.log(this);
console.log(this === module.exports); //true