JavaScript

[JavaScript] object type(객체형) +예제

SangRok Jung 2022. 4. 12. 21:58
반응형

 

객체형(Object type)

object 구상도

필요한 데이터와 기능을 가지고 있다.

 

 

▶ 개념

  • Primitive type을 제외한 데이터 타입의 베이스 인스턴스.
  • JavaScript의 거의 모든 객체는 Object의 파생 인스턴스다.
  • 데이터를 읽고 쓰는 가장 기본적인 기능을 탑재하고 있다.

 

 

▶ 구성

  • Object는 {}로 생성한다.
  • key-value 형식으로 데이터 유지. (key : value)
    • web환경에서도 key-value 형식이다.

 

 

 

 

객체형의 선언 및 연산

  • 객체 내부에는 Primitive type뿐만 아니라 객체형도 들어갈 수 있다.

 

<body>
    <script>
        const product = 
        {
            //object 생성
            name : 'mouse',
            type : 'wireless',
            color : 'black',
            buttons : 6,
            scroll : true
        }

        //object 데이터 타입 확인
        console.log(typeof(product))

        //object의 property(속성) 읽기
        console.log(product)
        console.log(product.name)
        console.log(product['type'])
    </script>
</body>

//object
//{name: 'mouse', type: 'wireless', color: 'black', buttons: 6, scroll: true}
//mouse
//wireless

 

 

 

예제

※ 학생을  추상화하여 object를 object 만들고 object 내부의 값을 출력하시오.

* 추상화 : 핵심적인 개념 또는 기능을 간추려 내는 것

 

<body>
    <script>
       const student = 
       {
           name : 'Snag Rok Jung',
           id : '220001',
           major : 'SC',
       }

       console.log(typeof(student))
       console.log(student)
       console.log(student.name)
       
    </script>
</body>

 

 

 

 

▶ 객체 속성(property)의 변경

  • 속성 변경
  • 속성 추가
    • 속성 변경과 같은 방식이며 속성이 없다면 추가가 됨
  • 속성의 삭제
    • delete 객체. 속성

 

<body>
    <script>
       const student = 
       {
           name : 'Snag Rok Jung',
           id : '220001',
           major : 'SC',
           gender : ''
       }


       //속성 변경 (UPDATE)
       student.major = 'SDC'
       console.log(student.major)

       //속성 추가 (WRITE)
       student.gender = 'Man'
       console.log(student.gender)

       //속성 삭제 (DELETE)
       delete student.id;
       console.log(student.id)

       //SDC
       //MAN
       //undefined
    </script>
</body>

 

 

예제

※ 학생 object에 국어, 영어, 수학 성적이 저장되어 있는 배열을 속성으로 추가하시오.

<body>
    <script>
       const student = 
       {
           name : 'Snag Rok Jung',
           id : '220001',
           major : 'SC',
           gender : ''
       }
       student.score = [['국어', 98], ['수학', 44], ['영어', 22]]

       console.log(student.score)

    </script>
</body>

 

 

 

 

 

▶ Method(메서드)

  • 객체에 포함되는 함수
<body>
    <script>
       const student = 
       {
           name : 'Snag Rok Jung',
           id : '220001',
           major : 'SC',
           gender : '',
           fun : function(){
               console.log("FUN")
           }
       }
       student.fun()

       //FUN
    </script>
</body>

 

  • this : 객체 자신을 나타내는 레퍼런스 값
    • 메서드에 default로 전달된다.
    • 화살표 함수(arrow function exepress)의 경우 this를 사용할 수 없음
      • this가 해당 Object의 레퍼런스 값은 아님.

 

  • 속성의 형식 출력 : JSON.stringify()
<body>
    <script>
       const student = 
       {
           name : 'Snag Rok Jung',
           id : '220001',
           major : 'SC',
           gender : '',
           fun : function(){
               console.log("FUN")
           }
       }
       console.log(JSON.stringify(student, null, 2))
       
    </script>
</body>

 

 

예제

※ 학생을 추상화한 object를 만들고 과목별 점수를 출력하는 함수와 모든 점수의 평균을 구하는 함수를 작성하여 출력하시오.

<body>
    <script>
       const student = 
       {
           name : 'Snag Rok Jung',
           id : '220001',
           major : 'SC',
           gender : '',
           score : [['국어', 99],['수학', 91],['영어', 98]],
           getScore : function(subject){
                        
                        for (let i = 0; i < this.score.length; i++)
                        {
                            if (this.score[i][0] === subject)
                            {
                                return this.score[i][1];
                            }                                                                                  
                        }
                        return null
                    },
           avg : function(){
                        let avgScore = 0;

                        for (let i = 0; i < this.score.length; i++)
                        {
                            avgScore = avgScore + this.score[i][1];
                        }
                        
                        return avgScore / this.score.length
                    }
        }

       console.log(student.getScore('국어'));
       console.log(student.getScore('수학'));
       console.log(student.getScore('영어'));
       console.log(student.getScore('과학'));
       console.log(student.avg());

       //99
       //91
       //98
       //null
       //평균 = 96

    </script>
</body>

 

 


예제

다음을 object로 만들고 이하의 문제를 수행하시오.

속성명
name Macbook pro
type notebook
USB 3
price $1,300
  • name을 출력하는 메서드를 추가하시오.
  • 10개 이상 구입 시엔 10%를 할인해준다고 한다. 구매 가격을 계산하는 메서드를 추가하시오.
  • 위 노트북은 다양한 언어를 지원한다. 지원하는 언어를 속성으로 추가하시오.

 

<body>
    <script>
       const product = {
            name : 'Macbook pro',
            type : 'notebook',
            USB : '3',
            currency : '$',
            price : 1300,
            getName : function(){
                        return this.name
            },
            getPrice : function(n){
                        if(n >= 10)
                        {
                            return this.currency + ((this.price * n) * 0.9)
                        }
                        else if (n < 10)
                        {
                            return this.currency + (this.price * n)
                        }
                        else{}
                        return null;
            }
       }
       console.log(product.getName())

       console.log(product.getPrice(26))

       product.lang = ['KOR', 'JPN', 'ENG'];

       //Macbook pro
       //$30420
    </script>
</body>

 

반응형