본 내용은 해당 강의 토대로 작성
객체
01. 객체와 프로퍼티
객체 (Object)
- 여러가지 값을 한 번에 저장할 수 있다.
객체 만들기
let object = {
key1 : value1,
key2 : value2
}
속성(Property)
- key와 value의 한 쌍
- key : Property Name
- value : Property Value
- Property Value 안에 모든 자료형이 들어갈 수 있다.
Property Name 주의 사항
- 원칙적으로 따옴표를 붙어야 하지만 붙이지 않아도 JavaScript에서 문자열로 형변환
- 첫 글자는 반드시 문자, 밑줄(_), 달러 기호($) 중 하나로 시작
- 띄어쓰기 금지
- 하이픈(-) 금지
- 불가피하게 규칙을 어기는 경우, 따옴표를 붙인다.
03. 객체에서 데이터 접근하기
점 표기법
- 따옴표로 감싸진 property name을 가진 것은 접근하지 못한다.
object.propertyName
대괄호 표기법
- 따옴표로 감싸진 property name에 접근할 수 있다.
- 대괄호 안에 변수를 넣거나 '+'연산자를 넣을 수 있다.
- 변수에 담긴 값을 가져올 때는 대괄호 표기법을 사용해야만 한다.
object['property name']
객체안의 객체 접근
object.propertyName1.propertyName2
object.porpertyName1['propertyname2']
05. 객체 다루기
프로퍼티 생성 & 수정
- 생성: Property Name에 value를 입력한다.
- 수정: 원하는 Property Name에 접근 후 새로운 Property Value를 입력
object.propertyName = 'Property Value';
프로퍼티 삭제
- delete 연산자 사용
delete object.propertyName;
in 연산자
- 해당하는 Property Name을 가진 Property가 존재하는지의 여부를 불린으로 return
console.log('porpertyName' in object);
예시
let profile = {
name : 'greedysiru',
bornYear: 2020,
isVeryNice: true,
language: {
title: 'JavaScript',
status: 'beginner'
},
hobby: null
}
if ('name' in profile){
console.log(`name 값은 ${profile.name}입니다.`);
} else {
console.log('프로퍼티가 없습니다.')
}
// name 값은 greedysiru입니다. 출력
06. 객체와 메소드
- 객체는 연관성 있는 함수들을 묶을 수 있다.
- 메소드는 어떤 객체의 고유한 동작이며 함수에 의미를 부여할 수 있다.
- 같아보이는 함수라도 객체에 따라 다르게 동작
- 이름 중복을 피할 수 있고 객체에 집중할 수 있다.
- 이런 함수들을 객체의 메소드라고 한다.
- console.log 또한 메소드
let object = {
functionName: function (parameter) {
실행할 명령어;
}
}
메소드 접근
- 대괄호 표기법으로도 접근 가능하다.
object.functionName('parameter');
예시
let rectAngle = {
width: 30,
height: 50,
getArea: function () {
return rectAngle.width * rectAngle.height;
}
}
let triAngle = {
width: 15,
height: 40,
getArea: function () {
return triAngle.width * triAngle.height / 2;
}
}
- 같은 이름의 함수인 getArea는 객체에 따라서 다르게 동작한다.
07. for … in 반복문
- 객체 안의 프로퍼티를 가지고 반복적인 동작 수행
- 객체의 property name이 변수에 담기게되고 동작부분을 Property의 갯수만큼 반복한다.
for (변수 in 객체) {
동작부분
}
예시
let profile = {
name : 'greedysiru',
bornYear: 2020,
isVeryNice: true,
language: {
title: 'JavaScript',
status: 'beginner'
},
hobby: null
}
for (let key in profile) {
console.log(profile[key]);
}
- profile의 key값들이 변수 key에 담겨져 Property의 갯수만큼 블록문을 반복한다.
- 변수 key를 이용하여 profile의 Property Value에 매번 접근하여 모든 값들을 출력할 수 있다.
0.8 for … in 주의사항
숫자형(양수) 프로퍼티 네임
- Property Name은 숫자형(양수)을 작성해서 사용할 수 있다.
- 사용될 때는 문자열로 형 변환이 되어 사용된다.
- 대괄호 표기법으로만 접근이 가능하다.
정수형 프로퍼티 네임
- 객체는 정수형 Property Name을 오름차순으로 먼저 정렬 후, 나머지 Property들은 추가한 순서대로 정렬하는 특징이 있다.
- 의도치 않은 결과를 가져올 수 있음에 주의
09. Date 객체
- 내장 객체(Standard built-in objects) : JavaScript에서 미리가지고 있는 객체
- 날짜와 관련된 객체
Date 객체 만들기
let myDate = new Date();
- 변수 선언 후 new 연산자와 Date() 함수 사용
- 객체를 만든 순간의 시간이 저장된다.
- 요일, 월, 일, 년도, 시간, 시간대
특정 시점 날짜 생성 (밀리초)
let myDate = new Date(1000);
- 넣어준 숫자값의 밀리초만큼 유닉스 시간(타임 스탬프)을 지난 객체가 생성
- 유닉스 시간(타임 스탬프) : 1970년 1월 1일 00:00:00 UTC
특정 시점 날짜 생성 (문자열)
- 날짜로 해석이 가능한 문자열을 넣어 해당 날짜의 객체 생성
- YYYY-MM-DD : 해당 년, 월, 일의 자정 기준
- YYYY-MM-DDThh:mm:ss : 해당 년, 월, 일 시간을 기준
// 년, 월, 일
let myDate1 = new Date('2020-02-15');
// 년, 월, 일, 시간
let myDate2 = new Date('2020-02-15T20:16:20');
소괄호 안에 여러가지 값 전달하여 생성
- 년, 월, 일, 시, 분, 초, 밀리초
- 년, 월은 필수
- 월은 0부터 시작
let myDate = new Date(2020, 1, 15, 22, 19, 6, 16);
10. Date 메소드
- 생성한 Date객체에 메소드를 사용할 수 있다.
- getDate(): 객체의 일자
- getDay() : 객체의 요일
- 일요일부터 0 ~ 6 까지
getTime
- 유닉스 시간(타임 스탬프)으로부터 몇 밀리초 지났는지 알아낸다.
let myDate = new Date();
console.log(myDate.getTime());
// 유닉스 시간으로부터 지금이 몇 밀리초 지났는지 출력
11. Date 객체 Tip
Date 객체 정보 수정하기
- set으로 시작하는 메서드는 생성된 Date 객체의 정보를 수정
- setFullYear()
- setMonth()
- setDate()
let myDate = new Date();
myDate.setFullYear(2012);
myDate.setMonth(4);
myDate.setDate(2);
간단하게 시간 정보 알아내기
let myDate = new Date();
console.log(myDate.toLocalDateString()); // myDate가 가진 날짜에 대한 정보 (년. 월. 일)
console.log(myDate.toLocaleTimeString()); // myDate가 가진 시간에 대한 정보 (시:분:초)
console.log(myDate.toLocaleString()); // myDate가 가진 날짜와 시간에 대한 정보 (년. 월. 일 시:분:초)
Date.now() 메소드
- 메소드가 호출된 시점의 타임스탬프를 반환
let myDate = new Date();
console.log(Date.now() === myDate.getTime()); // true
Date 객체의 형변환
let myDate = new Date();
console.log(String(myDate));
console.log(Number(myDate));
console.log(Boolean(myDate)); // true
- String 변환 시, Date 객체의 날짜값이 그대로 문자열로 변환
- Number 변환 시, getTime() 메소드를 사용한 것과 똑같은 수치의 타임스탬프 값
- 이를 이용해서, 두 Date 객체 끼리의 시간 차이를 구할 수 있다.
느낀점
객체의 개념에 대해서 다시 한 번 점검할 수 있었다. 한 달 전만 해도 생소한 객체였지만 이제는 어느정도 가까워진 것 같다.
'programming study > JavaScript' 카테고리의 다른 글
[코드잇] 프로그래밍과 데이터 in JavaScript (3)(2021.2.16) (0) | 2021.02.16 |
---|---|
[코드잇] 프로그래밍과 데이터 in JavaScript (2)(2021.2.16) (0) | 2021.02.16 |
[코드잇] 프로그래밍 핵심 개념 in JavaScript (3)(2021.2.13) (0) | 2021.02.13 |
[코드잇] 프로그래밍 핵심 개념 in JavaScript (2)(2021.2.13) (0) | 2021.02.13 |
[코드잇] 프로그래밍 핵심 개념 in JavaScript (1)(2021.2.12) (0) | 2021.02.12 |