web

JavaScript - 3

imysydesu 2026. 6. 17. 15:17

 

 

 

 

1 . 객체 기초

 

 

 

 

 

 

1 - 1 . 절차 지향 프로그래밍

 

 

  • 코드를 순서대로 실행하는 절차로 구성하는 방식
  • C언어

 

ex) const names = ['김사과', '반하나', '오렌지', '이메론']

               for(let i = 0; i < names.lenth; i++) {

                    if(names[i].startswitch("김")) {

                            console.log("안녕하세요, " + names[i] + " 님!"

                     }

                 }

 

 

 

 

 

 

1 - 2 . 객체 지향 프로그래밍

 

 

  • 프로그램을 구성할 때 현실 세계의 사물들을 객체로 모델링하여, 객체 간의 상호작용을 통해 문제를 해결하는 방식

 

 

ex) const greeter = {

            names: ['김사과', '반하나', '오렌지', '이메론'],

             greetKim: function() {

                  for(let i = 0; i < names.lenth; i++) {

                       if(names[i].startswitch("김")) {

                            console.log("안녕하세요, " + names[i] + " 님!")

                       }

                   }

              }

          }

 

 

 

 

 

 

1 - 3 . 함수형 프로그래밍

 

 

  • 함수 자체를 중심에 두는 프로그래밍 패러다임
  • 데이터를 변경하지 않고 순수 함수를 조합하여 문제를 해결

 

 

const names = ['김사과', '반하나', '오렌지', '이메론']
names
           .filter(name => name.startswith ("김"))
           .forEach(name => console.log("안녕하세요, " + name + " 님!" ))

 

 

 

 

 

 

1 - 4 . 객체 

 

 

 

  • 하나의 값에 여러 데이터를 담을 수 있는 자료형
  • 속성(프로퍼티), 동작(메서드)을 함께 표현할 수 있는 구조
  • 키-값 쌍의 형태로 데이터를 저장

 

 

 

 

객체 리터럴

 

 

  • 중괄호 {} 안에 직접 속성과 메서드 정의

 

  • ex)

 

 

 

 

 

new Object() 생성자 사용

 

 

  • 객체를 빈 상태로 만들고 나중에 속성 추가
  • 실제로 많이 사용되지는 않음

 

  • ex)

 

 

 

 

 

 

 

  • 객체 리터럴과 new Object()의 단점 : 똑같은 형태의 객체를 다시 만들고 싶다면 코드를 일일이 다 작성해야 함

 

 

 

 

 

 

생성자 함수 사용

 

 

 

  • 객체를 여러 개 찍어낼 수 있는 템플릿 역할
  • new 키워드와 함께 사용

 

  • ex)

 

 

 

 

 

 

 

클래스(Class)

 

 

 

  • 원래 자바에 존재하지 않던 문법 -> ES6부터 가능
  • 구조가 명확하고 객체 지향 언어와 유사

 

  • ex)

 

 

 

 

 

 

 

1 - 5 . 객체 복사

 

 

 

 

얕은 복사

 

 

  • 객체의 1단계 속성만 복사하고 속성 값이 또 다른 객체나 배열이면 참조만 복사
  • 스프레드 (. . .) 사용 시 얕은 복사라 생각하면 편함

 

 

  • ex)

=> obj4의 address: {city: "서울"}은 값이 아닌 주소가 동일해짐 => city를 변경하면 원본도 변경됨

 

 

 

 

 

깊은 복사

 

 

  • 객체 내부의 모든 중첩된 값들까지 복사하는 방법 즉 완전히 새로운 객체를 만드는 것
  • structuredClone 사용 시 깊은 복사

 

 

  • ex)

=> structuredClone 사용으로 깊은 복사가 되어 새로운 객체가 만들어짐 => 값 변경해도 원본은 바뀌지 않음

 

 

 

 

 

 

 

 

1 - 6 . 스프레드 문법

 

 

 

  • 점 3개를 사용해 배열이나 객체의 값을 펼쳐서 복사하거나 전달할 수 있는 문법
  • 배열이나 객체 안의 요소들을 하나하나 꺼내서 다른 배열, 객체, 함수 등으로 옮겨줄 수 있음
  • 배열 펼치기, 배열 합치기, 배열에 요소 추가, 객체 복사, 객체 병합, 객체 속성 덮어쓰기, 함수 인자 전달 등을 함

 

 

 

  • ex)

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

2 . 클래스

 

 

 

 

 

 

 

2 - 1 . 클래스 상속

 

 

 

 

  • 다른 클래스의 속성과 메서드를 물려받을 수 있음

 

  • ex)

 

 

 

 

 

 

2 - 2 . 정적 메서드

 

 

 

 

  • static
  • 클래스 이름으로 직접 불러서 호출하는 메서드

 

  • ex)

 

 

 

 

 

 

 

2 - 3 . 클래스 필드

 

 

 

 

  • constructor 없이 속성을 바로 정의 가능
  • 클래스 레벨 속성, 비공개 속성 정의에 유리

 

  • ex)

 

 

 

 

 

 

 

 

2 - 4 . get/set

 

 

 

 

  • get과 set은 같은 이름을 공유해야 함
  • get: 값을 읽을 때 호출
  • set: 값을 할당할 때 호출
  • 내부에서 값을 저장할 땐 보통 _name처럼 언더스코어를 붙여서 구분함
  • get만 정의하면 읽기 전용 속성이 됨 -> 쓸 수 없음
  • set만 정의하면 쓰기 전용 속성이 됨 -> 읽을 수 없음
  • 속성처럼 사용 가능

 

 

  • ex)

=> 변수처럼 사용 가능하기에 user.name으로 사용

 

 

 

 

 

 

 

2 - 5 . private 필드

 

 

 

  • 클래스 내부에서만 접근 가능한 비공개 속성
  • #을 붙이면 반드시 동일한 클래스 안에서만 접근 가능
  • 상속에서도 접근 불가

 

 

  • ex 1)

 

 

 

 

  • ex 2)

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

3 . 프로토타입

 

 

 

 

 

 

  • 자바에만 존재
  • 자바스크립트에서 객체가 공통된 속성과 메서드를 공유하도록 해주는 메커니즘
  • 모든 객체는 내부에 prototype이라는 숨겨진 연결을 가지며 자신에게 없는 속성이나 메서드를 요청받으면 이 연결을 따라 프로토타입 객체에서 찾아옴
  • 여러 객체가 동일한 메서드를 각각 따로 가지지 않고 하나의 원본을 공유할 수 있어 메모리를 절약하고 구조적인 코드 작성이 가능함

 

 

  • ex)

=> Person 생성자로 만든 객체 p1, p2는 study라는 메서드를 직접 가지고 있지 않았음
=> Person.prototype이라는 공용 객체에 저장된 메서드를 참조해서 사용
=> p1 -> Person.prototype -> Object.prototype -> null(프로토타입 체인)

 

 

 

 

 

 

 

 

3 - 1 . Object 객체

 

 

 

 

 

 

  • 자바스크립트의 내장 객체인 Object는 모든 객체의 최상위 부모(프로토타입 기반)
  • 객체를 생성하고 조작하기 위한 기본 도구
  • Object는 객체를 만들 수 있는 생성자이면서 객체의 속성을 다루기 위한 다양한 메서드를 제공함
  • 모든 객체는 Object에서 출발하며 공통 기능은 Object.protorype에 정의

 

 

 

 

Object의 주요 메서드

 

 

 

  • Object.keys(obj) : 객체의 모든 키(속성 이름)를 배열로 반환
         => const user = { name: "김사과", age: 20 }
              console.log(Object.keys(user)) //['name', 'age']

 

  • Object.values(obj) : 객체의 모든 값(속성 값)을 배열로 반환
          => console.log(Object.values(user)) //['김사과', '20']
                Object.entries(obj) : 객체의 키와 값 쌍을 [key, value] 형태의 배열로 반환
                 console.log(Object.entries(user)) //[ [name: "김사과"], [age: 20]]

 

  • Object.assign(obj) : 객체를 복사하거나 병합할 때 사용
           => Object.hasOwn(obj, key) : 객체가 특정 속성을 직접 가지고 있는지 확인
                 console.log(Object.hasOwn(user, "job")) //false
                  console.log(Object.hasOwn(user, "name")) //true

 

  • Object.freeze(obj) : 객체를 동결시켜 속성을 변경, 추가, 삭제할 수 없게 만듦
             => const config = { debug: true }
                   Object.freeze(config)
                   config.debug = false
                    console.log(config.debug) // true(변경 안 됨)
        

 

 

 

 

 

 

 

 

 

 


'web' 카테고리의 다른 글

JavaScript - 5  (0) 2026.06.22
JavaScript - 4  (0) 2026.06.18
JavaScript - 2  (0) 2026.06.16
Git  (0) 2026.06.15
JavaScript - 1  (0) 2026.06.15