WEB2 - JavaScript 32 (객체프로퍼티와 메소드)

2021. 9. 29. 15:57·youtube.com|user|egoing2/WEB2 - JavaScript
728x90

객체프로퍼티와 메소드

객체에는 함수도 담을 수 있다.

  • ex10.html

만들어둔 coworkers 를 활용하여 coworkers 라는 객체에 메소드를 추가해보자.

 

showAll 이라는 메소드를 추가

(coworkers 에 있는 각각의 데이터들을 iterate 해서 화면에 출력하는 코드)

 

coworkers.showAll = function(){

}

 

이것은 이렇게 정의할 수도 있다.

 

function showAll(){

}

 

var showAll = function(){

}

 

(모두 다 똑같은 표현)


<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>object</h1>
    <h2>Create</h2>
    <script>
      var coworkers = {
        "beginner":"livebyfaith117",
        "programmer":"egoing"
      };
      document.write("beginner:"+coworkers.beginner+"<br>");
      document.write("programmer:"+coworkers.programmer+"<br>");
      coworkers.bookkeeper="duru";
      document.write("bookkeeper:"+coworkers.bookkeeper+"<br>");
      coworkers["data scientist"]="taeho";
      document.write("data scientist:"+coworkers["data scientist"]);
    </script>
    <h2>Iterate</h2>
    <script>
      for(var key in coworkers){
        document.write(key+':'+coworkers[key]+'<br>');
      }
    </script>

    <h2>Property & Method</h2>
    <script>
      coworkers.showAll = function(){
        for(var key in coworkers){
          document.write(key+':'+coworkers[key]+'<br>');
        }
      }
      coworkers.showAll();
    </script>
  </body>
</html>

 

이렇게 작성을 하고 나면 좋은 코드 작성이 아니다. 

 

변수 coworkers 가 for 문에 박혀있기 때문에 객체가 바뀐다면 정보를 못 가져오는 현상이 발생할 수 있다.

여기서 this 를 쓰는 것이다.

그렇게 되면 변수 coworkers 가 바뀌어도 this 는 자기 자신을 가리키기 때문에 영향을 받지 않는다. 

 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <h1>object</h1>
    <h2>Create</h2>
    <script>
      var coworkers = {
        "beginner":"livebyfaith117",
        "programmer":"egoing"
      };
      document.write("beginner:"+coworkers.beginner+"<br>");
      document.write("programmer:"+coworkers.programmer+"<br>");
      coworkers.bookkeeper="duru";
      document.write("bookkeeper:"+coworkers.bookkeeper+"<br>");
      coworkers["data scientist"]="taeho";
      document.write("data scientist:"+coworkers["data scientist"]);
    </script>
    <h2>Iterate</h2>
    <script>
      for(var key in coworkers){
        document.write(key+':'+coworkers[key]+'<br>');
      }
    </script>

    <h2>Property & Method</h2>
    <script>
      coworkers.showAll = function(){
        for(var key in this){
          document.write(key+':'+this[key]+'<br>');
        }
      }
      coworkers.showAll();
    </script>
  </body>
</html>

 

이렇게 화면에 출력된 것을 보면 showAll 이 coworkers 에 소속된 데이터이기 때문에 showAll 도 화면에 표시가 된다.

이런 문제를 없애기 위해서는 for문 안에서 if문으로 'for문을 제외한다' 라는 코딩을 하면 되겠지만 이 시간에는 중요하지 않기 때문에 skip.

 

객체에 소속된 변수의 값으로 함수를 지정할 수 있고,

 

coworkers.showAll = function(){
 for(var key in this){
  document.write(key+':'+this[key]+'<br>');
 }
}

 

이것으로 인해 객체에 소속된 함수를 만들 수 있었다.

 

coworkers.showAll();

 

그리고 객체에 소속된 함수를 메소드(Method) 라고 한다. 

객체에 소속된 변수를 가리키는 말을 프로퍼티(Property) 라고 한다.
( ex property = beginner, programmer, bookkeeper, data scientist )

저작자표시 (새창열림)

'youtube.com|user|egoing2 > WEB2 - JavaScript' 카테고리의 다른 글

WEB2 - JavaScript 34 (파일로 쪼개서 정리 정돈하기)  (2) 2021.10.01
WEB2 - JavaScript 33 (객체의 활용)  (0) 2021.09.30
WEB2 - JavaScript 31 (객체와 반복문)  (0) 2021.09.29
WEB2 - JavaScript 30 (객체, object)  (1) 2021.09.28
WEB2 - JavaScript 29 (객체 'object' 의 예고)  (0) 2021.09.27
'youtube.com|user|egoing2/WEB2 - JavaScript' 카테고리의 다른 글
  • WEB2 - JavaScript 34 (파일로 쪼개서 정리 정돈하기)
  • WEB2 - JavaScript 33 (객체의 활용)
  • WEB2 - JavaScript 31 (객체와 반복문)
  • WEB2 - JavaScript 30 (객체, object)
ro117youshin
ro117youshin
코딩 / 외국어공부 (영어, 중국어) / 독서 등 자기계발을 기록합니다.
  • ro117youshin
    Taking an extra step
    ro117youshin
  • 전체
    오늘
    어제
    • 분류 전체보기 (153)
      • DDD (5)
      • JAVA (13)
      • Spring Boot (2)
      • Spring (4)
      • MySQL (1)
      • C (1)
      • Algorithm & Data Structure (34)
        • study (15)
        • programmers (0)
        • boj (18)
        • assignments (1)
      • CS: Computer Science (6)
        • CS50 2019 (4)
        • Network (2)
        • Database (0)
      • Git (3)
      • foreign language (16)
        • English (0)
        • Chinese (16)
      • BOOK (2)
      • ETC (2)
      • youtube.com|user|egoing2 (64)
        • WEB1 - HTML & Internet (5)
        • WEB2 - CSS (9)
        • WEB2 - JavaScript (18)
        • JavaScript Immutability (0)
        • DATABASE1 (4)
        • DATABASE2 MySQL (12)
        • JAVA1 (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘문제
    BOJ
    HSK6급공부
    자바
    HSK6급모의고사
    ddd
    css
    나의 앱 만들기
    조건문
    Java
    HSK6급
    variable
    Domain Driven Design
    mysql
    도메인 주도 설계
    javascript
    개발공부
    Java자료구조
    DATABASE2
    JAVA1
    중국어공부
    최범균
    백준
    js
    코딩공부
    baekjoon
    생활코딩
    객체
    HSK6급필수어휘
    HTML
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
ro117youshin
WEB2 - JavaScript 32 (객체프로퍼티와 메소드)
상단으로

티스토리툴바