JavaScript 객체 생성 · 배열
이 장은 JavaScript의 기본 데이터 구조와 브라우저 출력 연습을 묶은 내용입니다. 객체를 만드는 방식, 배열을 순회하고 정렬하는 방식, Date와 색상 문자열을 화면에 반영하는 흐름을 구분합니다.
원문은 같은 book 데이터를 세 가지 방식으로 만듭니다. new Object, 객체 리터럴, 생성자 함수 방식입니다.
| 방식 | 코드 | 특징 |
|---|---|---|
| new Object | let book = new Object() | 빈 객체를 만든 뒤 속성 추가 |
| 객체 리터럴 | { title: "HTML5" } | 가장 간단하고 많이 사용 |
| 생성자 함수 | function Book() | 같은 구조의 객체를 여러 개 만들 때 사용 |
| new Book | let book = new Book() | this로 속성을 초기화 |
객체 속성은 점 표기법으로 읽습니다. book.title, book.author, book.price를 이어 출력하면 책 정보를 표시할 수 있습니다.
생성자 함수 안의 this는 새로 만들어질 객체를 가리킵니다. 그래서 this.title에 값을 넣으면 생성된 book 객체가 그 속성을 갖습니다.
문자열 배열 예제는 이름 목록을 출력하고, 가장 긴 이름, 사전순으로 가장 앞선 이름, 정렬 결과를 구합니다.
| 작업 | 코드 흐름 | 결과 |
|---|---|---|
| 전체 출력 | for 반복문 | 모든 이름 표시 |
| 가장 긴 이름 | length 비교 | jaemoonlee |
| 가장 먼저 나오는 이름 | 문자열 비교 | gracehwang |
| 증가순 출력 | sort() | 사전식 정렬 |
문자열은 문자 코드 순서로 비교됩니다. 원문 메모처럼 gracehwang이 먼저 나오는 이유는 g가 다른 이름의 첫 글자보다 앞서기 때문입니다.
split("&")은 입력 문자열을 & 기준으로 나누어 배열로 만듭니다. 예를 들어 사과&바나나&망고는 세 항목으로 나뉩니다.
| 입력 | 구분자 | 결과 |
|---|---|---|
| a&b&c | & | a, b, c |
| red,blue | , | red, blue |
| hello | & | hello 하나 |
| 빈 입력 | & | 검사 필요 |
정수 5개 입력 예제는 prompt로 숫자를 받고 배열에 저장한 뒤, reverse()로 순서를 뒤집어 출력합니다.
원문 예제들은 대부분 document.write로 결과를 바로 문서에 씁니다. 학습용으로 흐름이 단순하지만, 실제 페이지에서는 특정 DOM 요소에 출력하는 방식이 더 안정적입니다.
| 출력 방식 | 장점 | 주의 |
|---|---|---|
| document.write | 예제가 짧음 | 로드 후 사용하면 문서가 덮일 수 있음 |
| innerHTML | HTML 출력 가능 | 입력값 보안 주의 |
| textContent | 안전한 텍스트 출력 | HTML 태그 해석 안 함 |
| appendChild | DOM 구조 유지 | 코드가 조금 길어짐 |
| 실수 | 증상 | 해결 |
|---|---|---|
| 객체 방식 혼동 | this와 리터럴을 섞어 생각합니다. | 생성 방식별 목적을 구분합니다. |
| 문자열 비교 오해 | 예상과 다른 이름이 앞에 옵니다. | 문자 코드 기준을 이해합니다. |
| prompt 취소 처리 없음 | null 처리 오류가 납니다. | null 검사 후 split/parseInt를 실행합니다. |
| parseInt 결과 확인 없음 | NaN이 배열에 들어갑니다. | isNaN으로 검사합니다. |
| reverse 원본 변경 모름 | 원래 배열 순서가 사라집니다. | 필요하면 복사본을 만듭니다. |
| 체크 | 통과 기준 |
|---|---|
| Object | new Object 방식으로 속성을 추가할 수 있습니다. |
| literal | 객체 리터럴 구조를 설명합니다. |
| constructor | this로 속성을 초기화하는 흐름을 압니다. |
| array | length와 반복문으로 배열을 처리합니다. |
| split | 구분자로 문자열을 배열로 나눕니다. |
| reverse | 배열 순서를 뒤집습니다. |
| 확인 | 콘솔 예시 | 의미 |
|---|---|---|
| 객체 | console.log(book) | 속성 구조 확인 |
| 배열 | console.log(names) | 현재 순서 확인 |
| 길이 | console.log(names[i].length) | 가장 긴 이름 비교 |
| split 결과 | console.log(array) | 분할 결과 확인 |
| NaN | console.log(isNaN(n)) | 정수 입력 확인 |
| 케이스 | 입력 | 예상 |
|---|---|---|
| book 출력 | 세 방식 실행 | 같은 책 정보 출력 |
| 긴 이름 | 문자열 배열 | 가장 긴 이름 표시 |
| split | a&b&c | 세 줄 출력 |
| 정수 입력 | 1,2,3,4,5 | 역순 5,4,3,2,1 |
| 취소 | prompt 취소 | 추가 검사 필요 |
book 객체 예제는 속성만 가진 객체에서 시작합니다. 여기에 메서드나 여러 책 배열을 추가하면 객체와 배열을 함께 연습할 수 있습니다.
| 연습 | 목표 | 힌트 |
|---|---|---|
| 속성 추가 | publisher 추가 | book.publisher |
| 가격 변경 | 할인가 계산 | book.price * 0.9 |
| 메서드 출력 | 객체 내부 함수 사용 | this.title |
| 객체 배열 | 여러 책 관리 | books.push(book) |
| 정렬 | 가격순 정렬 | sort((a,b)=>a.price-b.price) |
문자열 배열과 정수 배열 예제는 기본 반복문을 익히기 좋습니다. 이후에는 map, filter 같은 배열 메서드로 같은 일을 다시 작성해 볼 수 있습니다.
| 작업 | 반복문 방식 | 배열 메서드 방식 |
|---|---|---|
| 전체 출력 | for | forEach |
| 길이 변환 | 새 배열에 push | map(name => name.length) |
| 긴 이름 필터 | if 조건 | filter |
| 정렬 | sort | sort 비교 함수 |
| 역순 | reverse | 복사 후 reverse |
| 테스트 | 확인 내용 |
|---|---|
| 객체 속성 추가 | book.year를 추가하고 출력되는지 확인합니다. |
| 생성자 재사용 | new Book()을 두 번 호출해 서로 다른 객체인지 봅니다. |
| 문자열 정렬 | 대문자 이름을 섞으면 순서가 어떻게 바뀌는지 확인합니다. |
| split 구분자 없음 | &가 없는 문자열을 넣으면 배열 길이가 1인지 봅니다. |
| 숫자 입력 취소 | prompt 취소 시 parseInt 결과를 확인합니다. |
| 원본 보존 | 복사본 reverse 후 원본 배열이 유지되는지 봅니다. |
| 배열 길이 | push 후 length가 증가하는지 확인합니다. |
핵심 한 줄 요약
Tags
'php' 카테고리의 다른 글
| JavaScript 기초 문법 실습 완전 정리 (0) | 2026.07.07 |
|---|---|
| JavaScript 객체 배열 · eval 수식 완전 정리 (0) | 2026.07.07 |
| JavaScript Date · 색상 완전 정리 (0) | 2026.07.06 |
| JavaScript transform · z-index · 난수 완전 정리 (0) | 2026.07.06 |
| JavaScript DOM 동적 삽입 완전 정리 (0) | 2026.07.06 |
왕진 블로그

댓글