(10.05) 언어 스터디 일지정리

방지식·2022년 10월 7일
0

6-3 객체와 배열 고급

속성 존재 여부 확인
객체 내부에 어떤 속성이 있는지 확인해보는 코드는 자주 사용하는 코드.
객체에 없는 속성에 접근하면 undefined 자료형이 나온다.

const object = {
    name: '혼자 공부하는 파이썬',
    price: 18000,
    publisher: '한빛미디어'
 }

객체 내부에 속성이 있는지 확인
if (object.name !== undefined) {
    console.log('name 속성이 있습니다.')
} else {
    console.log('name 속성이 없습니다.')
}

if (object.author !== undefined) {
    console.log('author 속성이 있습니다.')
} else {
    console.log('author 속성이 없습니다.')
}
위와 같이 작성해도 되지만 특정속성이 false로 변환될수 있는 값(0,false, 빈 문자열)이
있어야 안전하게 사용할수 있다.
if (object.name) {
    console.log('name 속성이 있습니다.')
} else {
    console.log('name 속성이 없습니다.')
}

if (object.author) {
    console.log('author 속성이 있습니다.')
} else {
    console.log('author 속성이 없습니다.')
}
물론 더 짧은 조건문을 사용해도 된다.
object.name || console.log('name 속성이 없습니다.')
object.author || console.log('author 속성이 없습니다.')
객체의 기본 속성을 지정
object.name = object.name !== undefined ? object.name : '제목 미정'
object.author = object.author !== undefined ? object.author : '저자 미상'

짧게작성도 가능
object.name = object.name || '제목 미정'
object.author = object.author || '저자 미상'

객체 출력
console.log(JSON.stringify(object, null, 2))
author의 속성이 없었으므로 기본속성인 '저자미상'으로 적용된다.

배열 기반의 다중 할당
최신 자바스크립트부터 한번에 여러개의 변수에 값을 할당하는 다중 할당기능이 추가됨

ex.
let [a, b] = [1, 2] -> a=1,b=2가 할당됨
console.log(a,b)    -> 1,2로 출력

let arrayA = [1,2,3,4,5]
const [a,b,c] = arrayA
console.log(a,b,c)  -> 1,2,3(앞에있는 3개의 값만 할당됨)

객체 기반의 다중 할당
객체 내부에있는 속성을 꺼내서 변수로 할당할때 사용

const object = {
    name: '혼자 공부하는 파이썬',
    price: 18000,
    publisher: '한빛미디어'
}

// 객체에서 변수를 추출
const { name, price } = object      // name속성과 price속성을 그대로 꺼낸다
console.log('# 속성 이름 그대로 꺼내서 출력하기')
console.log(name, price)
console.log('')

const { a=name, b=price } = object  // name속성을 a라는 이름으로 price속성을 b라는 이름으로 꺼낸다.
console.log('# 속성 이름 그대로 꺼내서 출력하기')
console.log(a, b)

얕은 복사(참조 복사)

  • 복사하는 행위가 단순하게 다른 이름을 붙이는 형태로 동작하는 복사를 의미
    const 구름 = {
        이름: '구름',
        나이: 6,
        종족: '강아지'
    }
    // const 별 = 구름
    // 별.이름 = '별'
    // 별.아이 = 1
    
    console.log(JSON.stringify(구름))
    console.log(JSON.stringify(별))
    
    실행결과
    {"이름":"별","나이":1,"종족":"강아지"}
    {"이름":"별","나이":1,"종족":"강아지"}

깊은 복사

  • 복사 후 두 객체를 완전하게 독립적으로 사용 할 수있는 복사를 의미
const 별 = {...구름}
별.이름 = '별'
별.아이 = 1

console.log(JSON.stringify(구름))
console.log(JSON.stringify(별))

실행결과
{"이름":"구름","나이":6,"종족":"강아지"}
{"이름":"별","나이":1,"종족":"강아지"}

0개의 댓글