객체(Object)
- 자바스크립트의 모든 건이 다 객체다
- 객체는 중괄호
{}
로 만든다.
- key, value 한 쌍을 property라고 한다.
- key를 propety name, value를 property value라고도 한다.
- propety name은 문자열(string) 타입
- 따옴표를 생략하고 property name을 만들 때 주의사항
- 첫 번째 글짜는 반드시 문자, 밑줄(_), 달러 기호($)중 하나도 시작
- 띄어쓰기 금지
- 하이픈(-) 금지
- 객체는 key와 value를 콜론(:)으로 구분하는 property들의 집합
let myObject = {
key: value,
}
- 객체 안에 있는 여러개의 property들은 쉼표
,
로 구분
let myObject = {
key: value,
key: value,
key: value
}
- 객체의 property는 key를 통해서, 점 표기법 혹은 대괄호 표기법으로 접근 가능
- property vlaue는 모든 자료형 값을 사용 가능
console.log(typeof {
productName: '연유라떼',
price: 4600,
isVeryNice: true,
worstFlavor: null,
bestMenu: {
bread: '크루아상',
cake: '당근케이크'
}
})
객체에서 데이터 접근하기
- 점 표기법 (objectName.propertyName)
- 띄어쓰기가 있는 property name에 접근할 수 없음
- 대괄호 표기법 (objectName['propertyName'])
- 존재하지 않는 프로퍼티에 접근하는 경우: undefined
let myMenu = {
'product Name': '연유라떼',
price: 4600,
isVeryNice: true,
worstFlavor: null,
recommendedMenu: {
bread: '크루아상',
cake: '당근케이크'
}
}
console.log(myMenu.price)
console.log(myMenu.recommendedMenu.bread)
console.log(myMenu['product Name'])
console.log(myMenu['product ' + 'Name'])
console.log(myMenu.recommendedMenu['cake'])
console.log(myMenu['product'])
객체 다루기
- in 연산자를 통해서 객체 내에 property name이 있는지 확인 가능
let profile = {
'이름': '김아무개',
'나이': '23',
'키': 174,
'여자친구': undefined,
'좋아하는 메뉴': {
'한식': '된장찌개',
'양식': '알리오올리오',
'중식': '짬뽕'
}
}
console.log(profile['몸무게'])
profile['몸무게'] = 67
console.log(profile['몸무게'])
console.log(profile['나이'])
delete profile['나이']
console.log(profile['나이'])
console.log(profile['이름'] !== undefined)
console.log('이름' in profile)
console.log(profile['여자친구'] !== undefined)
console.log('여자친구' in profile)
if ('name' in profile) {
console.log(`name 값은 ${profile.name}입니다.`)
} else {
console.log('name 프로퍼티는 존재하지 않습니다.')
}
메소드 (Method)
let greetings = {
sayHello: function (name) {
console.log(`Hello ${name}`)
},
sayHi: function() {
console.log('Hi')
},
sayBye: function() {
console.log('Bye')
}
}
greetings.sayHello('김씨')
greetings['sayHello']('김씨')
- method를 쓰면 다른 함수와 이름 중복을 피하고 고유한 동작으로 의미있게 구분 가능
let rectAngle = {
witdh: 30,
height: 50,
getArea: function () {
return rectAngle.width * rectAngle.height
}
}
let triAngle = {
width: 15,
height: 40,
getArea: function () {
return triAngle.width * triAngle.height / 2
}
}
for ... in
for..in
for (변수 in 객체) {
동작부분
}
let beverage = {
'탄산': '제로콜라',
'주스': '오렌지주스',
'차': '헛개차'
}
for (let k in beverage) {
console.log(k)
console.log(beverage[k])
}
let testObject1 = {
'2': '알고리즘',
'1': '자료구조',
'5': '자바스크립트'
}
for (let key in testObject1) {
console.log(testObject1[key])
}
- 숫자형(양수) 프로퍼티 네임
- 프로퍼티 네임에는 숫자형(양수)도 작성 가능
- 프로퍼티 네임이 string, 문자열로 출력됨
- 대괄호표기법으로만 접근 가능
let testObject2 = {
100: '정수',
3.5: '소수'
}
for (let key in testObject2) {
console.log(`${key}의 자료형은 ${typeof key}입니다.`)
}
console.log(testObject2['100'])
- 정수형 프로퍼티 네임
- 객체는 정수형 프로퍼티 네임을 오름차순으로 먼저 정렬하고, 나머지 프로퍼티들은 추가한 순서대로 정렬하는 특징이 있다
let testObject3 = {
3: '정수3',
name: 'test',
1: '정수1',
birthDay: '2021.7.3',
2: '정수2'
}
for (let key in testObject3) {
console.log(key)
}
Date 객체
let myDate = new Date()
console.log(myDate)
let myDate1 = new Date(1000)
console.log(myDate1)
let myDate2 = new Date('2021-07-03')
let myDate3 = new Date('2021-07-03T19:32:15')
console.log(myDate2)
console.log(myDate3)
let myDate4 = new Date(2021, 7, 3, 20, 10, 15)
console.log(myDate.getTime())
let myDate5 = new Date()
console.log(Date.now())