코딩기록 저장소 🐕/프론트(리액트, JS)

JS object

kimkongmom 2023. 8. 30. 14:38

 

 

 

 

 

객체(object)
      1. 여러 데이터로 구성된 하나의 데이터를 의미한다.
      2. 중괄호 {}를 이용해서 객체의 데이터를 묶는다.
      3. 객체 형식
        {
          속성: 값,
          '속성': 값
        }
      4. 객체 속성
        1) 객체.속성
        2) 객체['속성']
      5. JavaScript 객체 표기법을 이용한 데이터 교환 형식을 JSON이라고 한다.

 

 

▶ 객체 만들기

 

 
 var person = {
      name: '홍길동',
      age : 30,
      isAlive: true,
      hobbies: [
        '여행',
        '운동',
        '요리'
      ],
      bef: {
        name: '고길동',
        age: 30,
      },
      info: function(){
        console.log('이름:' + this.name + '나이' + this.age);  // 현재 객체(person === this)
      }
    }
 

 

객체 속성 확인

 

 
  console.log('name:' + person.name);
    console.log('age:' + person.age);
    console.log('isAlive:' + person.isAlive);
    for(let i =0; i < person.hobbies.length; i++){
      console.log('hobbies:' + person.hobbies[i]);
    }
    console.log("bef's name:" + person.bef.name);
    console.log("bef's age:" + person.bef.age);
    (person.info());
 

객체 속성 동적 처리(추가, 삭제, 수정)

 

빈 객체 생성

 

 
 var car = {};
 

 

속성 추가

 

 
    car.model = '모닝';
    car.maker = 'kia';
 

 

속성 수정

 

 
    car.model = '레이';
 

 

속성 삭제

 

 
  delete car.maker;
  console.log(car);
 

 

생성자 함수
    1. 객체를 만드는 함수이다.
    2. new 키워드를 이용해서 객체를 만들 수 있다.
    3. 관례상 첫 글자를 대문자로 작성한다.
    4. 생성자 함수 형식
    function 함수명(매개변수, 매개변수, ...){
      this.속성 = 매개변수;
      this.속성 = 매개변수;
      ...
    }

 

 

생성자 함수 정의

 

 
  function Product(code, name, price){
      this.code = code;
      this.name = name;
      this.price = price;
    }
 

 

생성자 함수 호출(객체 생성)

 

 
  var product = new Product('A123', '청소기', 10000);
 

 

객체 속성 확인

 

 
    console.log(product['code']);
    console.log(product['name']);
    console.log(product['price']);
 

 

객체는 for-in문으로 각 속성을 순회할 수 있다.

 

 
  var book = {
      title: '어린왕자',
      author: '생택쥐베리',
      price: 10000
    }; 
 

 

객체 속성 순회

 

 
  for(let p in book){ // 객체 book의 속성(property)들이 변수 p로 하나씩 전달된다.
                        // 이 때 변수 p의 타입은 string 이므로, book.p는 동작하지 않고 book[p]만 동작한다.
      console.log(book.p);  // 안 됨
      console.log(book[p]); // 됨
    }
 

 

테이블 만들기
성명   연락처        이메일

숙희   010-1111-1111 sookhee@gmail.net
정희   010-2222-2222 junghee@gmail.net
미희   010-3333-3333 mehee@gmail.net

 

1. 생성자 함수를 정의해서 3개의 객체를 생성하시오.

 
 var Person = function(name, phoneNumber, email){
      this.name = name;
      this.phoneNumber = phoneNumber;
      this.email = email;
 

2. 생성된 3개의 객체를 배열에 저장하시오.

 
 var people = [
      new Person('숙희', '010-1111-1111', 'sookhee@gmail.net'),
      new Person('정희', '010-2222-2222', 'junghee@gmail.net'),
      new Person('미희', '010-3333-3333', 'mehee@gmail.net')
  ];
 

3. 배열에 저장된 값을 테이블 형식으로 출력하시오.

 
 var str = '<table border="1">';
    str+= '<thead><tr><td>성명</td><td>연락처</td><td>이메일</td></tr></thead>';
    str+= '<tbody>';
        for(let i = 0; i < people.length; i++){
          str += '<tr>';
          for(let p in people[i]){
            str += '<td>' + people[i][p] + '</td>';
          }
          str += '</tr>';
        }
        str += '</tbody></table>';
        document.getElementById('box').innerHTML = str;
 

결과물

JSON 내장 객체
     1. JavaScript 객체 -> 문자열 형식의 JSON 데이터
       var 문자열 = JSON.stringify(객체)
     2. 문자열 형식의 JOSN 데이터 -> JavaScript 객체
       var 객체 = JSON.parse(문자열)

 

객체 생성

 
 var person = {
      name: '홍길동',
      age: 30
    };
 

객체 -> 문자열

 
 var str = JSON.stringify(person);
    console.log(typeof str, str);

문자열 -> 객체

 
 var person = JSON.parse(str);
    console.log(typeof person, person);
 

 

Date 내장 객체
      1. 타임스탬프 기반으로 날짜와 시간을 나타낸다.
        (타임스탬프 : 1970년 1월 1일 자정 UTC 기준으로 증가하고 있는 밀리초)
      2. 타임스탬프, 년, 월, 일, 시, 분, 초 등 원하는 값을 얻을 수 있다.

 

 
 var timestamp = Date.now();
    console.log(timestamp);

    var strNow = Date();  // new Date().toString()
    console.log(typeof strNow, strNow);

    // 객체 형식의 현재 날짜와 시간
    var now = new Date();
    console.log(typeof now, now);
 

결과 console

서버시간 타임시커처럼 구현해보기

 
      <div id="watch">
        <span id="year"></span>
        <span id="month"></span>
        <span id="day"></span>
        <span id="hour"></span>
        <span id="minute"></span>
        <span id="second"></span>
      </div>
 

년, 월, 일, 시, 분, 초, 타임스탬프

 

 
  var year = now.getFullYear();
    var month = now.getMonth();   // 주의 ! (0~11)
    var day = now.getDate();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    var timestamp = now.getTime();
    console.log(year, month, day, hour, minute, second, timestamp);
 

특정 날짜와 시간을 가진 객체 생성

 
  var someday = new Date(2023, 8, 30, 16, 30, 30);  // 2023-09-30 16:30:30 (8월이 아님 주의!)
    console.log(someday);
 

시계 만들기

 
 setInterval(function(){
      // 화면 표시
      var now = new Date();
      document.getElementById('year').textContent = now.getFullYear();
      document.getElementById('month').textContent = String(now.getMonth() + 1).padStart(2, '0');
      document.getElementById('day').textContent =  String(now.getDate()).padStart(2, '0');
      document.getElementById('hour').textContent = String(now.getHours()).padStart(2, '0');
      document.getElementById('minute').textContent = String(now.getMinutes()).padStart(2, '0');
      document.getElementById('second').textContent = String(now.getSeconds()).padStart(2, '0');

      // 50초 넘으면 class 속성 변경
      if(now.getSeconds() >= 50){
        document.getElementById('watch').setAttribute('class', 'warning');
      } else {
        document.getElementById('watch').removeAttribute('class');
      }
    }, 1000);
 
 
    <style>
      .warning {
        color: crimson50초가 넘어갔을 때 빨간색으로 변경해주는 style태그
      }
      }
    </style>
 

결과물
50초넘겼을때 결과

수능 디데이

 
  var now = new Date();               // 2023-08-30
    var dday = new Date(2023, 10, 16);  // 2023-11-16
    var timestamp = dday.getTime() - now.getTime();
    console.log(timestamp / 1000 / 60 / 60 / 24);
 

77일남음

'코딩기록 저장소 🐕 > 프론트(리액트, JS)' 카테고리의 다른 글

JS event  (0) 2023.08.31
JS 내장객체, 내장함수  (0) 2023.08.31
JS 함수function2  (0) 2023.08.30
CSS보충 메뉴바, 로그인창  (0) 2023.08.29
JS 배열, function함수  (0) 2023.08.29