패스트캠퍼스 데브캠프

김민태의 데브캠프 2기 - this에 대해 아라보자

vitamin3000 2024. 10. 31. 12:18

 

this(객체) = context라고도 불리우며 this의 값은 호출하는 시점(즉 실행되는 시점)에 값이 정해진다

 

ex)

const user = {
	name : "김아무개",
    age : 20,
    height : 180,
    getName: function(){
    	return this.name:
      }
    }

위 코드에서 this는 어떤 값을 가질까?

저번 게시글의 내용으로 가장 가까운 식별자를 찾기 때문에 "김아무개"를 값으로 갖는다.

조금 더 알아보자면 getName()  같이 함수 자체는 소유자가 지정되어 있지 않기 때문에 전역 객체의 값을 지정한다.

 

2. Object

  모든 객체의 조상(부모)는 "Object"이다.

  모든 객체에는 prototype이 존재하는데, Object와 prototype를 연결하는 속성은 "__proto__" 이다.

위 특성을 이용하는 것이 객체의 속성 탐색 알고리즘으로 다음의 단계를 거친다.

a. 명시한 객체(자기 자신)에서 해당 속성값 찾기

b. 없다면 "__proto__" 속성이 가리키는 객체에서 찾는다

c. 없다면 Object에서 찾는다

d. (여기까지 없다고?) undefined

 

"__proto__"로 명시하는 것은 다음의 단점이 있다.

     proto는 동적으로 변경이 가능해서 객체 간의 상속 관계를 명확하게 파악이 어려워 코드 흐름 숙지나 가독성이 매우 떨어진다.

 

떄문에 ES6에서 class 개념이 출현하는데,

 

class

    class의 명의 첫글자는 무조건 대문자

    new로만 호출이 가능

    extends 키워드를 사용한 명확한 상속 관계 설정

   method의 정의와 상속이 모두 클래스 내에서 가능하다

instance

    선언된 클래스를 실체화 시킨 것으로, 주로 new로 선언된 객체를 말한다.

class 내에서 constuctor(생성자)함수가 기본 생성되는데 기본적으로 인스턴스의 형태를 정의해주는 메소드이다.