[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)