javascript 에서는 This 라는 것이 있다.
이 this 는 상황에 따라서 바라보는 것이 다른데
1. 기본적으로는 전역 객체 (node js : global / 브라우저 : window)를 바라본다.
2. method 로 this 를 호출 했을 때와, 함수로 this 를 호출 할 때 서로 다른 객체를 바라본다.
method 와 함수의 가장 큰 차이점은 호출의 주체 존재 여부로 분류할 수 있다.
// 함수
let f = function(x){
console.log(this, 1)
}
f(1) // output : window(global) , 1
// Method
let object = {
method : f,
}
object.method(1) // output : {method: f}, 1
간단하게 보면 온점(.)의 유무로 호출 객체가 유무를 판단할 수 있으며
이로 인해 this 가 어떤 것을 가르키고 있는지 알 수 있다.
예제
let object = {
outer : function (){
console.log(this); // (1)에서 Method(. 이용)로 실행되었으므로, 'object' 출력
// 선언부로 바로 실행되지 않음
let innerfunction = function (){
console.log(this);
};
innerfunction(); // 위의 변수 선언부를 실행, 함수 그 자체 (. 없음)로 실행되었으므로, 'window' OR 'global' 출력
// 함수를 object 내 Method로 설정
let object_2 = {
innermethod : innerfunction,
};
objects_2.innermethod(); // 설정된 Method 호출(. 로 호출) 'object_2' 출력
}
};
object.outer(); // (1)
'Backend > Node js' 카테고리의 다른 글
[Nodejs] Express 프레임워크 시작하기 (0) | 2023.04.22 |
---|---|
[Javascript] 배열의 조합 구하기 (1) | 2023.04.15 |
[Javascript] 콜백 함수란 (0) | 2023.04.13 |
[Javascript] Class와 Instance, 그리고 get & set (0) | 2023.04.12 |
[javascript] ES6 에서 추가된 것들 (0) | 2023.04.09 |