[혼공스] 5주차 : 객체
본문 바로가기

혼공 스터디/혼자 공부하는 자바스크립트

[혼공스] 5주차 : 객체

728x90
반응형

 

[ 기본 미션 :: 객체, 속성, 메소드 ]

1. 객체의 기본

  • 객체란?
    • 실제로 존재하는 사물
    • 이름과 값으로 구성된 속성을 가진 자바스크립트의 기본 데이터 타입
    • 배열 또한 객체

 

1) 객체

  • 자바스크립트에서 여러 자료를 다룰 때 객체를 사용한다.
  • 배열도 여러 자료를 다룰 수 있음 => 배열도 객체
  • 배열을 typeof로 실행해보면 object라는 문자열이 출력

  • 배열을 다음과 같이 선언함

  • 배열에는 인덱스(index)와 요소(element)가 있음
  • 각각의 요소를 사용하려면 다음처럼 배열 이름 뒤에 인덱스로 접근

  • 배열은 객체를 기반으로 만들어졌으므로 배열과 객체는 상당히 비슷하다
  • 다른 점이 있다면 배열은 요소에 접근할 때 인덱스를 사용하지만, 객체는 키를 사용한다.

 

  • 객체는 중괄호로 생성하며 쉼표로 연결해서 입력함

 

 

  • 위에서 생성한 객체를 표로 나타내면 다음과 같음
속성
제품명 7D 건조 망고
유형 당절임
성분 망고, 설탕, 메타중아황산나트륨, 치자황색소
원산지 필리핀
  • 다음과 같이 객체 뒤에 대괄호를 사용하고 키를 입력하면 객체의 요소에 접근할 수 있음

  • 온점을 사용할 수도 있음

 

 

 

 

2) 속성과 메소드

  • 배열 내부에 있는 값을 요소라고 함
  • 객체 내부에 있는 값은 속성이라고 함
  • 배열의 요소와 마찬가지로 객체의 속성도 모든 형태의 자료형을 가질 수 있음

(1) 속성과 메소드 구분하기

  • 메소드(method) :: 객체의 속성 중 함수 자료형인 속성

(2) 메소드 내부에서 this 키워드 사용하기

  • 메소드 내에서 자기 자신이 가진 속성을 출력하고 싶을 때는 자식이 가진 속성임을 분명하게 표시해야함
  • 자기 자신이 가진 속성이라는 것을 표시할 때는 this 키워드를 사용함
메소드 내부에서의 this 키워드 // 6-1-1.html
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script>
      // 변수를 선언합니다.
      const pet = {
        name: '구름',
        eat: function (food) {
          alert(this.name + '은/는 ' + food + '을/를 먹습니다.')
        }
      }

      // 메소드를 호출합니다.
      pet.eat('밥')
    </script>
  </head>
  <body></body>
</html>

3) 동적으로 객체 속성 추가/제거

  • 객체를 생성한 후에 속성을 추가하거나 제거하는 것을 말함

(1) 동적으로 객체 속성 추가하기

동적으로 객체 속성 추가하기
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script>
      // 객체를 선언합니다.
      const student = {}
      student.이름 = '윤인성'
      student.취미 = '악기'
      student.장래희망 = '생명공학자'

      // 출력합니다.
      console.log(JSON.stringify(student, null, 2))
    </script>
  </head>
  <body></body>
</html>
{ "이름": "윤인성", "취미": "악기", "장래희망": "생명공학자" }

 

(2) 동적으로 객체 속성 제거하기

  • 객체의 속성을 제거할 때는 delete 키워드를 사용한다.

동적으로 객체 속성 제거하기
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script>
      // 객체를 선언합니다.
      const student = {}
      student.이름 = '윤인성'
      student.취미 = '악기'
      student.장래희망 = '생명공학자'

      // 객체의 속성을 제거합니다.
      delete student.장래희망

      // 출력합니다.
      console.log(JSON.stringify(student, null, 2))
    </script>
  </head>
  <body></body>
</html>
{ "이름": "윤인성", "취미": "악기" }

4) 메소드 간단 선언 구문

  • function () {} 형태로 메소드를 선언할 수 있지만
  • 최신버전에서는 더 쉽게 선언할 수 있음
메소드 선언 구문 6-1-4.html
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script>
      // 객체를 선언합니다.
      const pet = {
        name: '구름',
        eat (food) {
          alert(this.name + '은/는 ' + food + '을/를 먹습니다.')
        }
      }

      // 메소드를 호출합니다.
      pet.eat('밥')
    </script>
  </head>
  <body></body>
</html>

5) 화살표 함수를 사용한 메소드

  • function () {} 형태로 선언하는 익명 함수와 () => {} 형태로 선언하는 화살표 함수는
    객체의 메소드로 사용될 때 this 키워드를 다루는 방식이 다름.
this 키워드의 차이
<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script>
      // 변수를 선언합니다.
      const test = {
        a: function () {
          console.log(this)
        },
        b: () => {
          console.log(this)
        }
      }

      // 메소드를 호출합니다.
      test.a()
      test.b()
    </script>
  </head>
  <body></body>
</html>
{a: ƒ, b: ƒ}
Window {window: Window, self: Window, document: #document, name: '', location: Location, …}

 

2. 객체의 속성과 메소드 사용하기

  • 기본 자료형
  • 객체 자료형

1) 객체 자료형

  • 객체: 속성과 메소드를 가질 수 있는 모든 것
  • 배열인지 확인할 때 Array.isArray() 메소드를 사용
  • 함수는 실행이 가능한 객체로 typeof 연산자로 자료형을 확인하면 funciton을 출력
  • 함수를 일급 객체라고도 함

2) 기본 자료형

  • 실체가 있는 것 중에 객체가 아닌 것을 기본 자료형이라고 

3) 기본 자료형을 객체로 선언하기

  • 숫자, 문자열, 불 등으로 자료형을 변환하는 함수(Number, String, Boolean) 

4) 기본 자료형의 일시적 승급

  • 승급 때 잠시 속성이라는 새옷을 입었다고 바로 뺏긴다

벌거벗은 임금님

 

 

[ 선택 미션 ]

<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script>
      // 변수를 선언합니다.
      const degree = 90
     
      // 출력합니다.
      const radian = degree * (Math.PI / 180)
      console.log(Math.sin(radian))
    </script>
  </head>
  <body></body>
</html>
 
Math.sin() 메소드는 괄호 내부에 라디안 단위를 넣어야 함.
728x90
반응형