5주차의 내용은 크게 

 

1. DOM

 

2. 클래스

 

3. 클로저 

 

로 나누어진다.

 

 

 

1. DOM = document object modeling

브라우저에 기본적으로 내장되어있는 API 중 하나이다.

JS 는 기본적으로 브라우저 환경에서 작동하기 위해 만들어 졌으므로, 

HTML 과의 상호작용이 당연히 가능해야한다.

 

Dom Tree 는   html구조를 JS가 이해 할 수 있도록 내용을 해석한 것이다.

어떤 형태로?  Object 형태로 !

 

1-1 DOM 의 node 

 

 

1-2 DOM 요소의 속성과 메서드 구분 

document는 대상 객체 ( document 는 항상 dom tree 최상단의 노드 !)

getElementByid() 는.. 인자와 같은 id 를 가진 요소 하나를 반환하라는 메서드 

innerHTML 은 그 속성  !

 

 

 

2. Class 

 

ES6 에서 도입된 문법으로, 

다른 언어에서 많이 사용되던 클래스 기반의 프로그래밍 개발 기법 의 유행(?)으로 인해

자바스크립트에서도 억클( 억지 class 문법...) 을 하려다 보니 니즈를 반영하여 만들었다고 하더라 ~

 

기본적으로 알아둬야 할 사항으로,

Class 와 Instance 가 있다.

 

그럼 JS 에서는 뭘 만드는 설계도 인가?

바로, 객체를 만드는 설계도 이다.

그리고 설계한 대로 만들어진 객체는 instance 가 되겠다.

 

동작을 찍어내는 function, 객체를 찍어내는 class

묘하게 비슷한 감이...?

 

class Person {
	// constructor는 이름을 변경할 수 없어요.
  constructor(name, age) {
		// 이름(name)과 나이(age)가 없으면 사람이 아니죠?
		// new라는 키워드를 이용해서 인스턴스를 만들 때, 기본적으로
		// 넣어야 하는 값들을 의미해요! :)
		// 여기서 말하는 this는 만들어질 인스턴스를 의미한다고 생각해주세요!
    this.name = name;
    this.age = age;
  }

	// 다양한 메소드를 아래와 같이 정의할 수 있어요.
	// 여기서 this.name으로 내부 값을 접근해야 함을 잊지 마세요! :)
  sayHello() {
    console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
  }
}

const person1 = new Person("Alice", 30);
const person2 = new Person("Bob", 25);

// 만든 객체를 토대로 메서드 호출해보기
person1.sayHello(); // 출력: "Hello, my name is Alice and I am 30 years old."
person2.sayHello(); // 출력: "Hello, my name is Bob and I am 25 years old."

 

 

person 이라는 class는,  name 과 age 만 받는다면 새로운 person 객체를 마구마구 생성할 수 있는 설계도이다.

 

추가로, person class는 함수 또한 내장이 가능하고, 생성된 객체도 해당 함수를 가져간다.

 

또...중간에 못보던 녀석이 있다 !

Constructor() ; 

 

 

 

 

Getter 와 Setter 

get 을 통해 class 속성에 접근하여, 원하는 값을 반환하게 할 수 있다 !

set 을 통해 class 속성에 접근하여, 원하는 값으로 설정할 수 있다 !

 

 

상 속  Inheritance

 

객체를 복사하는 설계도는 class 

class를 복사하는 설계도는 상속 이라고 보면 될 듯 하다.

Animal class 로 부터 상속받는 Dog class 를 생성

상속 과정에서 필요한 부분을 입맛에 맞게 수정할 수 있다는게 핵심이다.

 

 

Static Method

 

 

3. 클로저

dom 과 class 가 디저트 였다면,

클로저가 이번 챕터의 메인 보스 이다.

 

 

 

클로저를 생각할 때 기억해야할 것  !!

중첩 함수 , 종료된 변수 , 여전히 참조

 

콜스택 적 으로 표현한다면,

이미읽어서 실행이 종료된 함수의 스코프는 외부 스코프로 나가면서 지워지게 된다.

원래대로 라면, 더 이상 해당 스코프의 내용은 참조할 수가 없게된다.

 

그러나, 클로저(중첩함수) 가 존재하는 함수라면, 실행 컨텍스트에서 제거되지만,

해당 함수의 렉시컬 환경까지 소멸하는 것이 아니다.

 

왜?

더 이상 쓰일 일이 없는 데이터를 제거하는 프로세스인

가비지 컬렉터 << 이 유능한 친구가 참조할 데이터가 남아있기 때문에 렉시컬 환경은 남겨두는 것이다.

 

 

왜 클로저를 써야할까? 

 

즉, 클로저로 인해 일어나는 현상에서 이득이 많기 때문에 쓴다는 말인데,

 

가장큰 장점은,

함수 내부로 변수를 은닉하여 의도되지 않은 변경으로 부터의 보호가 가능

이라는 것이다 !

 

( 아무튼 의도적으로 만들어진 기능은 아닌듯 함 )

 

 

this의 대상이 중구난방 이었던과 비슷하게,

 

closer 또한 closer 로 구성된 코드인지, 아닌지를 구분해야 하는 능력을 키워야 할 것 같다 !

 

'내일배움캠프' 카테고리의 다른 글

[내일배움캠프] 24.08.22 TIL  (0) 2024.08.22
[내일배움캠프] 24.08.21 TIL  (0) 2024.08.21
[내일배움캠프] 24.08.19 TIL  (0) 2024.08.19
[내일배움캠프] 24.08.16 TIL  (0) 2024.08.16
[내일배움캠프] 24.08.14 TIL  (0) 2024.08.14

+ Recent posts