[JS] Object

양갱장군·2020년 9월 20일
0

TIL

목록 보기
8/39

✅ Object Syntax

객체는 이름과 값으로 구성된 프로퍼티들의 집합이며, 아래 규칙을 따라 객체를 만들 수 있다.

  • property 이름은 중복될 수 없다.
  • property이름과 property값 사이에 :(콜론)으로 구분한다.
  • property를 추가할 때는 ,(쉼표)를 붙여준다.
  • property 값에는 ✨어느 type✨이나 가능하다(string, number, array, object, function..)

✅ Object 접근법

  • 객체이름.프로퍼티이름
  • 객체이름["프로퍼티이름"]

위 두 방식으로 특정 객체의 property 값에 접근할 수 있다.
대괄호 표현은 변수를 넣고 싶을 때 사용하면 좋다.

⏩ 복잡한 구조의 객체 접근법

let objData = {
  name: 50,
  address: { 
    email: "gaebal@gmail.com",
    home: "위워크 선릉2호점"
  },
  books: {
    year: [2019, 2018, 2006],
    info: [{
      name: "JS Guide",
      price: 9000
    }, {
      name: "HTML Guide",
      price: 19000,
      author: "Kim, gae bal"
    }]
  }
};

위 객체에서 "HTML Guide"에 접근하고 싶다면, 아래와 같이 접근하면 된다.

let bookName = objData.books.info[1].name;

🙊 오늘의 삽질

이번 삽질은 Object 개념 보다는 변수 scope 설정과 관련이 있다. 함수가 복잡해지면서 전역변수를 놓치는 실수가 왕왕있다.

function getData(salesArr){
   for (i=0; i < salesArr.length; i++){
    let sumSalesAmount = 0;  
    let salesAmount = salesArr[i][1];
    sumSalesAmount = sumSalesAmount + salesAmount;
  }
  let objData = {sumAmount: sumSalesAmount};
  return objData;
  } 
  • sumSalesAmount 변수를 for문 블럭 내부에서 정의하면, for문 밖에 있는 objData 객체는 sumSalesAmount 값에 접근할 수 없다.
  • 그러므로 sumSalesAmount 변수는 for문이 시작하기 전에 정의해서 블럭과 상관없이 접근할 수 있도록 수정해야 한다.

0개의 댓글