다음 내용은 javascript의 내용이 아닌 nodejs의 내용입니다. nodejs의 내용은 브라우저의 javascript의 내용과 다릅니다.
이것
글로벌console.log(this); {} this.num = 10; console.log(this.num); 10 console.log(global.num); undefined
전역 세계에서는 기본적으로 빈 개체입니다. 그리고 전역에서 이것은 전역 개체와 아무런 관계가 없습니다. 그렇다면 전역에서 이 작업은 정확히 누구를 가리킵니까? 이에 대해서는 이 장의 후반부에서 설명하겠습니다.
이것
을 함수로function fn(){ this.num = 10; } fn(); console.log(this); {} console.log(this.num); undefined console.log(global.num); 10
함수에서 this는 전역의 this와 동일한 객체가 아닌 전역 객체를 가리킵니다. 간단히 말해서 함수에서 이것을 통해 정의하는 변수는 이때 전역에 속성을 추가하는 것과 같습니다. "이것은 그것과 아무 관련이 없습니다"의 "이"와 동일합니다.
믿을 수 없다면 아래 코드를 보고 증명해 보세요.
function fn(){ function fn2(){ this.age = 18; } fn2(); console.log(this); global console.log(this.age); 18 console.log(global.age); 18 } fn();
맞습니다. 함수에서 this는 전역을 가리킵니다.
생성자의이것
function Fn(){ this.num = 998; } var fn = new Fn(); console.log(fn.num); 998 console.log(global.num); undefined
생성자에서 this는 전역이 아닌 인스턴스를 가리킵니다.
이제 전역적 맥락에서 이에 대해 이야기할 수 있습니다. 실제로 Nodejs의 범위에 대해 더 알고 싶다면 다음을 읽어보세요. Nodejs의 범위 문제에 대한 토론입니다. 이 기사.
주제로 돌아가서, 전역 컨텍스트에서 이는 module.exports를 가리킵니다.
this.num = 10; console.log(module.exports); {num:10} console.log(module.exports.num);
글로벌 관점에서 이것이 module.exports를 가리키는 이유는 무엇입니까? 그러면 먼저 module.exports에 대해 더 자세히 알아야 합니다. 기회가 된다면 이에 대해 먼저 알아보도록 하겠습니다. 나중에