본문 바로가기
javaScript

메서드 내부의 중첩 함수에서의 this

by mooyou 2023. 8. 28.
728x90
300x250

 

var value=10;
// 클래스 정의
function Execute() {
    // 프로퍼티 정의
    this.value=0;
}

// 메서드 정의
Execute.prototype.method1=function(){
    function inner(){
        this.value=20;
        value=30;

        console.log("1. value1 = "+value);
        console.log("2. this.value = "+this.value);
        console.log("3. window.value = "+window.value);
    }

    inner();
}

// 인스턴스 생성
var ex1 = new Execute();
// 메서드 호출
ex1.method1();

/*
 실행결과
 1. value = 30
 2. this.value = 30
 3. window.value = 30
 */

 

객체 메서드 내부의 중첩함수의 this는 객체가 아닌 window를 가르킨다. 따라서 this.value는 전역변수로 저장된다.

value값은 먼저 inner()함수 내부에서 찾고 없으면 Execute()내부에서 찾는다 여기도 없으면 전역에서 찾는다.

결국 모두 전역의 같은 value를 가져온다.

728x90
반응형

'javaScript' 카테고리의 다른 글

함수호출(), new 함수호출() 차이  (0) 2023.08.30
상황에 따른 this 값  (0) 2023.08.29
메서드 에서의 this  (0) 2023.08.27
이벤트 리스너 안에서 this  (0) 2023.08.11
중첩 함수 안에서 this  (0) 2023.08.09

댓글