Backend/Node js
[Javascript] This 란?
천우산__
2023. 4. 7. 22:20
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)