[큐시즘스터디 1주차] 코테를 위한 자바스크립트(2)

냐옹·2023년 9월 7일
0

스터디

목록 보기
2/14
  1. 기본 문법

    • 변수, 상수, 자료형 (String, Number, Boolean 등)
    • 조건문 (if, switch)
    • 반복문 (for, while, do-while)
    • 함수, 화살표 함수
    • 배열과 객체 리터럴
  2. 배열

    • 배열 메서드 (push, pop, shift, unshift, splice, slice, map, filter, reduce, sort 등)
    • 배열 순회
    • 다차원 배열
  3. 객체

    • 객체의 속성과 메서드
    • Object.keys(), Object.values(), Object.entries()
    • 프로토타입과 상속
  4. 문자열 처리

    • 문자열 메서드 (substring, substr, slice, indexOf, split, replace 등)
    • 정규 표현식
  5. 함수

    • 재귀 함수
    • 클로저와 스코프
    • 고차 함수 (Higher-order functions)
  6. 자료구조

    • 스택, 큐, 링크드 리스트, 트리, 그래프
    • 해시 테이블 (객체를 사용하여 구현 가능)
  7. 알고리즘

    • 정렬 (버블, 선택, 삽입, 병합, 퀵 정렬 등)
    • 검색 (선형 검색, 이진 검색)
    • 트리와 그래프 관련 알고리즘 (DFS, BFS 등)
    • 동적 프로그래밍, 그리디 알고리즘
    • 최단 경로 알고리즘 (다익스트라, 플로이드-워셜 등)
  8. 비동기 처리

    • Promise, async/await
    • callback
  9. 기타

    • 스프레드 연산자, 구조 분해 할당
    • SetMap 등의 내장 객체 사용
    • reduce, filter,
    • find, findIndex
  10. 최적화 및 디버깅

    • console.log를 활용한 디버깅
    • 시간 복잡도와 공간 복잡도 개념

금일은 객체와 문자열 처리에 대해서 알아보겠습니다.

먼저 객체는 뭘까. 객체는 자바스크립트의 데이터 타입 중 하나다. 객체는 키-값의 쌍으로 데이터를 저장한다. 이런 키-값 쌍을 우리는 속성(property)라고 부른다.
객체는 데이터와 함수(메서드)를 함게 그룹화하는 것에 유용하다.

  • 객체는 중괄호를 사용하여, 정의하며 각 속성은 콤마(,)로 구분한다.

1. 객체의 속성과 메서드

  • 객체는 속성(property)와 메서드(method)로 구성됩니다.
let person = {
    name: 'John',           // 속성
    age: 30,                // 속성
    greet: function() {    // 메서드
        console.log('Hello, ' + this.name);
    }
};

person.greet();  // "Hello, John" 출력

2. Object.keys(), Object.values(), Object.entries()

  • Object.keys() : 객체의 모든 키를 배열로 반환합니다.
let keys = Object.keys(person);
console.log(keys);  // ["name", "age", "greet"]
  • Object.values() : 객체의 모든 값을 배열로 반환합니다.
let values = Object.values(person);
console.log(values);  // ["John", 30, ƒ]
  • Object.entries() : 객체의 모든 키와 값을 배열로 반환합니다.
let entries = Object.entries(person);
console.log(entries);  // [["name", "John"], ["age", 30], ["greet", ƒ]]

3. 프로토타입과 상속

Prototype

먼저 프로토 타입이 뭘까. 프로토 타입은 객체지향 프로그래밍에서 중요한 개념 중 하나이다. 그러나 우리가 원래 알던 다른 언어의 클래스 기반 상속과는 조금 다르게 동작한다.
자바스크립트에서 모든 객체는 내부적으로 다른 객체를 참조하는 숨겨진 속성인 [[Prototype]] 를 가진다. 대부분의 경우 이 속성은 해당 객체의 생성자의 prototype 속성을 참조한다.
이렇게 연결된 객체 체인을 프로토타입 체인이라고 부른다.

  1. 속성 및 메서드 공유
    프로토타입을 사용하면 여러 객체 간에 메서드와 속성을 공유할 수 있다. 이것은 메모리를 효율적으로 사용하면서도, 객체 간에 기능을 재사용하는 것에 도움이 된다.
  2. 프로토타입 체인을 통한 상속
    객체에 특정 속성이나 메서드가 없으면, 자바스크립트는 그 객체의 프로토타입 체인을 따라가며 해당 속성 / 메서드를 찾는다. 이것를 통해 한 객체의 속성 / 메서드를 다른 객체가 상속받게 할 수 있다.

자바스크립트는 프로토타입 기반 언어이다. 객체는 다른 객체의 프로토타입으로 사용될 수 있다.

function Person(name, age) {
    this.name = name;
    this.age = age;
}

Person.prototype.greet = function() {
    console.log('Hello, ' + this.name);
};

let john = new Person('John', 30);
john.greet();  // "Hello, John" 출력

여기서 john객체는 Person의 인스턴스이다.
우리는 Person의 프로토타입에 정의된 greet 메서드를 사용할 수 있다.

4. 문자열 처리

  • substring: 문자열의 부분 문자열을 반환한다.
let str = "Hello, world!";
console.log(str.substring(0, 5));  // "Hello"
  • substr : 시작 인덱스와 길이를 기반으로 부분 문자열을 반환한다.
console.log(str.substr(0, 5));  // "Hello"
  • slice : 문자열을 자르고 부분 문자열을 반환한다. 0~4의 인덱스까지인데, 헷깔리기 쉽다.
console.log(str.slice(0, 5));  // "Hello" 
  • indexof : 문자열 내에서 지정된 값을 찾아서 첫번째 일치하는 위치의 인덱스를 반환한다. 찾는 값이 만약에 없다면 -1을 반환한다.
let str = "Hello, world!";
let position = str.indexOf("world");
console.log(position);  // 7 출력
  • split(separator) : 지정된 구분자를 사용하여 문자열을 여러부분으로 분할하고, 결과를 배열로 반환한다. 파싱할 때 많이 쓰인다.
console.log("apple,banana,orange".split(","));  // ["apple", "banana", "orange"] 출력
  • replace(oldSubStr, newSubStr) : 문자열 내의 일치하는 첫번째 부분 문자열을 다른 문자열로 대체한다.
console.log(str.replace("world", "JavaScript"));  // "Hello, JavaScript!" 출력
  • trim : 문자열의 시작과 끝에서 공백 문자를 제거한다.
console.log("   Hello  ".trim());  // "Hello" 출력
  • includes(subStr) : 문자열이 지정된 부분 문자열을 포함하는지 여부를 확인한다. 검색에서 많이 쓴다.
console.log(str.includes("world"));  // true 출력

0개의 댓글