학습 목표
- 배열과 객체의 특징을 구분하고, 배열과 객체의 특징에 따라 웹 애플리케이션 개발 시 어떻게 사용되는지 이해한다.
- 객체 속성(property)의 추가, 조회, 변경, 삭제를 자유자재로 할 수 있다.
- 객체 속성 조회법 두 가지, dot notation과 bracket notation의 차이를 이해한다.
- 배열과 객체, 반복문을 응용하여 능숙하게 대량의 정보를 다룰 수 있다.
이름
, 이메일
, 사는 지역
이 필요하다.let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
{}
: curly bracket)를 이용해서 객체를 만들고,,
: comma)로 키-값 쌍(key
-value
pair)을 구분한다.let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
console.log(user.firstName); // dami
console.log(user.city); // Seoul
.
(dot)을 사용하여 객체(object)의 속성(property)에 그 값을 가져옴.let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
console.log(user['firstName']);
console.log(user['city']);
[]
(bracket)를 사용하여 값을 가져옴.[]
안에는 반드시 문자열을 입력해야 한다.
'is not defined'
에러가 발생한다. 해당 에러가 발생하는 이유는 무얼까? 🤷♀️Dot notation(.
)을 이용한 방법
let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
user.phone = '010-1234-5678';
console.log(user);
/*
{ firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
phone: '010-1234-5678' }
*/
Bracket notation([]
)을 이용한 방법
let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
user['phone'] = '010-1234-5678';
console.log(user);
/*
{ firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
phone: '010-1234-5678' }
*/
delete
연산자를 사용하여 객체의 속성을 제거한다.
delete expression
Dot notation(.
)을 이용한 방법
let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
delete user.city;
console.log(user)
/*
{ firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com' }
*/
Bracket notation([]
)을 이용한 방법
let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
delete user['city'];
console.log(user)
/*
{ firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com' }
*/
기존의 속성 값에 다른 값을 입력하면 기존의 값에서 새로운 값으로 덮어쓰게 된다.
Dot notation(.
)을 이용한 방법
let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
user.city = 'jeju';
console.log(user);
/*
{ firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'jeju' }
*/
Bracket notation([]
)을 이용한 방법
let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
user['city'] = 'jeju';
console.log(user);
/*
{ firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'jeju' }
*/
in
연산자를 사용하여 객체의 유무를 확인한다.속성 in 객체명
존재하면 true
, 존재하지 않으면 false
를 반환한다.
let user = {
firstName: 'Dami',
lastName: 'Kim',
email: 'oka1313@gmail.com',
city: 'Seoul',
}
console.log('email' in user); // true
console.log('phone' in user); // false
for in
문)for in
문은 객체에 주로 사용한다.
상속된 열거 가능한 속성들을 포함하여 객체에서 문자열로 키가 지정된 모든 열거 가능한 속성에 대해 반복한다.
구문
for (const variable in object) {
statement
}
variable
: 매번 반복마다 다른 속성이름(Value name)이 변수(variable)로 지정된다.object
: 반복작업을 수행할 객체로 열거형 속성을 가지고 있는 객체이다.예시
let obj = {
num: 123,
str: '문자',
bool: true,
arr: [4, 5, 6]
}
// 속성값의 타입이 문자열인 경우 해당 속성을 삭제하는 반복문
for (let property in obj) {
if (typeof obj[property] === 'str') {
delete obj['str']
}
}
console.log(obj) // { num: 123, str: '문자', bool: true, arr: [ 4, 5, 6 ] }
Object.keys()
: 속성의 key를 모아서 배열로 반환구문
Object.keys(obj)
예시
let obj = {
num: 123,
str: '문자',
bool: true,
arr: [4, 5, 6]
}
console.log(Object.keys(obj)); // [ 'num', 'str', 'bool', 'arr' ]
Object.values()
: 속성의 value를 모아서 배열로 반환구문
Object.values(obj)
예시
let obj = {
num: 123,
str: '문자',
bool: true,
arr: [4, 5, 6]
}
console.log(Object.values(obj)); // [ 123, '문자', true, [ 4, 5, 6 ] ]
Object.assign()
: 객체 합치기, 객체 복사구문
Object.assign(target, ...sources)
예시
let obj1 = {
num: 123,
str: '문자',
}
let obj2 = {
bool: true,
arr: [4, 5, 6]
}
console.log(Object.assign(obj1, obj2)); // { num: 123, str: '문자', bool: true, arr: [ 4, 5, 6 ] }
Object.is()
: 두 객체가 같은지 비교구문
Object.is(value1, value2);
예시
Object.is('foo', 'foo'); // true
Object.is(window, window); // true
Object.is('foo', 'bar'); // false
Object.is([], []); // false
let test = { a: 1 };
Object.is(test, test); // true
Object.is(null, null); // true
// 특별한 경우
Object.is(0, -0); // false
Object.is(-0, -0); // true
Object.is(NaN, 0/0); // true