
학습 목표
- 배열과 객체의 특징을 구분하고, 배열과 객체의 특징에 따라 웹 애플리케이션 개발 시 어떻게 사용되는지 이해한다.
- 객체 속성(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 expressionDot 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); // falsefor 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