61일차

Dogeun Lee·2023년 3월 2일
0

자바스크립트 객체

        자바스크립트의 객체는 {}내에 K:V(map형식)가 모여있는 형태로 작성된다.
        
        {k:v, k:v, k:V} // 자바스크립트 객체

        (참고) 자바스크립트 객체 모양의 문자열
        == JSON(Javascript Object Notation, 자바스크립트 객체 표기법)
        => "{K:V, K:V, K:V}"

        - 자바스크립트에서 객체를 생성하는 방법

        1. {} : 객체 리터럴 표기법을 이용한 생성
        2. 생성자 + new 생성자() 를 이용한 생성
    
<button id="btn1">객체 생성1</button>
<div class="area" id="div1"></div>

<hr>

<button id="btn2">객체 생성2</button>
<div class="area" id="div2"></div>

<h1>JSON(Javascript Object Notation, 자바스크립트 객체 표기법)</h1>

<pre>
    JS 객체 : {"memberID":"user01","memberPw":"pass01","age":20}
    JSON 문자열 : '{""}'

    - 간단한 포멧
    괄호{} 내에 key:value 쌍으로 구성"key":value}
    key : 반드시 문자열 사용 ( "" 표기 필수)
    value : String, Number, Boolean, Array, Object, Null 데이터 저장 가능
    
    - 객체{} 또는 배열[] 데이터를 효율적으로 표시가 가능하다.

    - 경량데이터 교환 방식

    - 순수 TEXT기반
    구조화 된 TEXT형식
    대부분 프로그래밍 언어에서 JSON 포멧 데이터를 핸들링 할 수 있는 라이브러리 제공
    시스템간 객체 교환에 용이하다.



<h2>JavaScript Json 내장 객체</h2>
<pre>
    JSON 포멧의 데이터를 간편하게 다룰 수 있는 내장된 객체

    JSON.stringify(JS객체) : JS객체 >> JSON문자열로 반환
    JSON.parse(JSON문자열) : JSON문자열을 다시 JS객체로 변환
</pre>

<button id="btn3">객체 생성2</button>

// 객채생성1

SCRIPT

document.getElementById("btn1").addEventListener("click", function () {
    // {} 객채 생성 및 다루기

    // **중요 **
    // JS객체 Key는 무조건 String (묵시적)
    // -> key 작성시 "", '' 를 작성안해도 String으로 인식한다.

    const brand = "스타벅스";

    const product = {
        "pName": "텀블러",
        brand: "투썸플레이스", //키값은 "brand"이기때문에 key밸류이지 전역변수가아님.
        color: ["red", "black", "silver"],
        price: 30000,
        'information': function () { // product 객체의 기능
            const brand = "메가커피"
            console.log(brand);

            // 객체 내부 함수에서 변수명을 작성 시
            // 해당 객체의 변수가 아닌 전역변수가 선택된다.
            // 같은 객체의 변수(key)를 선택하는 방법이 별도로 존재한다.

            // **객체 내부에서 this == 현재객체 선택

            console.log(this.pName);
            console.log(this.brand);
            console.log(this.color);
            console.log(this.price);

        }
    };

    console.log(product);

    //객체 기능 호출하기
    product.information();

    // 객체가 가지고 있는 값 출력하기
    const div1 = document.getElementById("div1");

    div1.innerHTML = "";

    // 객체의 값을 얻어오거나 대입하는 방법
    // 1) 얻어오기 : 객체명.key
    //              객체명['key']

    // 2) 대입하기 : 객체명.key = 값;
    //              객체명['key'] = 값;

    div1.innerHTML += "product.pName :" + product.pName + "
" div1.innerHTML += "product.brand :" + product.brand + "
" div1.innerHTML += "product.color :" + product.color + "
" div1.innerHTML += "product.price :" + product.price + "
" div1.innerHTML += "
" // product.price값 변경 product.price = 25000; div1.innerHTML += "product.price :" + product.price + "
" div1.innerHTML += "
" // JS에 없는 key에 값 대입하기 // -> 객체에 추가된다. product.capacity = "550ml"; console.log(product); div1.innerHTML += "product.capacity :" + product.capacity + "
" div1.innerHTML += "
" // 객체의 key 제거 방법 // delete 객체변수명.key // delete product.color; // console.log(product); // 객체명['key']방법으로 객체가 가지고 있는 모든 값 출력하기 // -> for in 구문 ( 객체 전용 for문 ) div1.innerHTML += "product['capacity'] :" + product['capacity'] + "
" div1.innerHTML += "
" // for(let key in 객체명) : 매 바퀴마다 객체의 k를 하나씩 얻어와서 key 변수에 저장 for (let key in product) { // 객체의 k는 모두 String == 'pName', 'price' div1.innerHTML += product[key] + "
" } }) //생성자함수 document.getElementById("btn2").addEventListener("click", function () { const div2 = document.getElementById("div2"); const stdList = []; //2. 생성자 함수 호출 : new 생성자함수명(매개변수) stdList.push(new Student(1, 2, "홍길동")); stdList.push(new Student(3, 10, "김길동")); stdList.push(new Student(2, 5, "임형주")); stdList.push(new Student(4, 7, "정서윤")); div2.innerHTML = ""; // for of : 배열 컬렉션 요소 반복접근용 for문 for (let std of stdList) { // console.log['std::' + std] // for in : 객체의 키 반복 접근용 for문 for (let key in std) { // console.log['key::' + key] //std[kye]의 자료형이 function이면 실행 후 출력 if (typeof std[key] == 'function') { div2.innerHTML += " introduce : " + std[key]() +
" } else { div2.innerHTML += ":" + std[key] + "
" } } div2.innerHTML += "
"; } }) //1. 생성자함수정의 : 생성자 함수의 시작은 반드시 대문자! function Student(grade, ban, name) { // JS함수의 매개변수는 let, const var를 적지않는다. // 안적어도 해당 함수의 지역변수로 취급 // 생성자 함수에서의 this는 무엇인가? // == new 연산자를 통해서 만들어지는 객체(앞으로 만들어질 객체) // 속성 this.grade = grade; this.ban = ban; this.name = name; this.introduce = function () { return this.grade + "학년" + this.ban + "반" + this.name; } } document.getElementById("btn3").addEventListener("click", function () { const std = new Student(5, 7, "김영희"); console.log(std); // 객체 console.log(JSON.stringify(std)); // 객체에서 JSON문자열로 변환됨 //** JSON 변환 시 객체의 기능은 포함하지 않는다!!! **/ // JSON은 데이터 전달에 특화 된 형태 const member = '{"memberID" : "user01", "membeerPw" : "pass01" , "age": 20}'; console.log(member); // JSON 문자열 console.log(JSON.parse(member)); // JSON >> 객체 })

DOM

profile
오대수

0개의 댓글