JS/JS 수업분

[JS] day07_Object

congs 2023. 4. 17. 23:01
 
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>객체</title>
</head>
<body>
    <h1>객체</h1>
    <script>
        const car = {name:'myCar',year:2023};
        // car = 100; 재할당 불가능 = car 객체의 지속성을 확보하기 위해서
        let car2 = {name:'superCar', year:2023};
        car2 = 100;
        // let은 재할당이 가능하지만, car2의 객체는 사라짐
        // = 객체를 활용하고자하는 목적이 사라짐
    </script>
    <script>
        const me = {
            lastName : 'park',
            firstName : 'jungeun',
            age : 26,
            addr : 'incheon',
            isDeveloper : true,
            'hobby' : 'game',
            'myFavor' : '간식',
            // 따옴표 사용도 가능!
            avail:{
                year:2023,
                title:'javascript',
                ver:'ES6+',
                project:'Back-end',
                intro: function(){
                    console.log(`${me.avail.title}:${me.avail.ver}=${me.avail.project}`);
                    return `re:${this.title} : ${this.ver} = ${this.project}`;
                    // this는 현재의 나!
                }
            },
            year : 2023
        };
        // 세미콜론 ; 의 유무는 선택
       
        // 전체 데이터 추출
        console.log(me);
        // 원하는 데이터 추출
        console.log(me.addr); // incheon
        console.log(me.year); // 2023
        console.log(me.avail.project); // Back-end
        console.log(me.avail.title); // javascript
        console.log(me.avail.intro); // 함수 실행이 아닌 지목!
        console.log(me.avail.intro()); // 함수 실행(invoke:호출실행)

        console.log('---------------------------------------');

        console.log(me['addr']);
        console.log(me['hobby']);
        console.log(me['avail']['title']);
        console.log(me['avail']['intro']());

        console.log('---------------------------------------');

        let keyName = 'firstName';
        console.log(me[keyName]); // jungeun = me['firstName']과 동일

        keyName = 'age';
        console.log(me[keyName]); // 26 = me['age']와 동일
       
        console.log('---------------------------------------');
       
        // 혼용 가능
        console.log(me.avail['title']);
        console.log(me['avail'].ver);

    </script>

    <script>
        // 객체 생성 : 좋아하는 뮤지션(가수)의 플레이 리스트 3곡
        // 이름, 나이, 플레이리스트(객체로), 함수(플레이리스트의 곡3개 출력함수)
        const singer = {
            name : '헤이즈',
            age : 31,
            playlist : {
                list1 : '널 너무 모르고',
                list2 : '저 별',
                list3 : '첫눈에'
            },
            into : function(){
                console.log(`${singer.name}의 노래 : 1.${singer.playlist.list1}, 2.${singer.playlist.list2}, 3.${singer.playlist.list3}`);
                return `노래: ${this.playlist.list1}, ${this.playlist.list2}, ${this.playlist.list3}`;
            },  
            into2 : function(list1, list2, list3){
                console.log(`${this.playlist.list1}, ${this.playlist.list2}, ${this.playlist.list3}`);
                return `re: ${list1},  ${list2},  ${list3}`;
            }
        }
        // 전체 출력
        console.log(singer);
        // 함수 출력
        console.log(singer.into()); // 리턴 출력
        console.log(singer.into); // 함수 출력(지목)
        // 가수 이름 출력
        console.log(singer.name);
        console.log(singer['name']);
        // 가수의 첫번째 노래 출력
        console.log(singer['playlist'].list1);
        console.log(singer.playlist['list1']);

        //함수에 다른 이름을 넣어보기
        console.log(singer.into2('aaa','bbb','ccc'));

    </script>
</body>
</html>
 
 
 

'JS > JS 수업분' 카테고리의 다른 글

[JS] day07_event_input (데이터받기)  (0) 2023.04.17
[JS] day07_event (버튼 클릭 이벤트)  (0) 2023.04.17
[JS] day07_function  (0) 2023.04.17
[JS] day07_datatype  (0) 2023.04.17
[JS] day07_let  (0) 2023.04.17