JS

[JS] 객체 괄호 헷갈리는 거

coco030030 2025. 4. 7. 11:25

내가 실수한 것

document.write("별의 바깥둘레: " + star.max_diameter() + "
");
document.write("별의 바깥둘레 반지름: " + star.max_radius() + "
");
document.write("별의 안쪽둘레: " + star.min_diameter() + "
");
document.write("별의 안쪽둘레 반지름: " + star.min_radius() + "
");

모조리 괄호를 넣었다.
출력이 당연히 별 색깔 빼곤 안된다.

맞는 식

 <script>
      let star = {
        color: "red",
        max_diameter: 30,
        min_diameter: 10,
        max_radius: function () {
          let max_x = this.max_diameter/2;
          return max_x;
        },
        min_radius: function () {
          let min_x = this.min_diameter/2;
          return min_x;
        }
      };
      star.color = "blue";
      document.write("별의 색상: " + star.color + "<br>");
      document.write("별의 바깥둘레: " + star.max_diameter + "<br>");
      document.write("별의 바깥둘레 반지름: " + star.max_radius() + "<br>");
      document.write("별의 안쪽둘레: " + star.min_diameter + "<br>");
      document.write("별의 안쪽둘레 반지름: " + star.min_radius() + "<br>");
    </script>​

객체 속성과 메서드의 괄호 사용법

document.write("별의 안쪽둘레: " + star.min_diameter() + "<br>"); // 오류!

문제점:

min_diameter일반 속성(값)인데 메서드처럼 괄호()를 붙여서 호출하려고 했기 때문입니다!

객체의 요소별 괄호 사용법:

  1. 일반 속성(값) - 괄호 사용 안 함
    • star.color
    • star.max_diameter
    • star.min_diameter
    • star.color() ❌ (에러!)
    • star.max_diameter() ❌ (에러!)
    • star.min_diameter() ❌ (에러!)
  2. 메서드(함수) - 반드시 괄호 사용
    • star.max_radius()
    • star.min_radius()
    • star.max_radius ❌ (함수가 실행되지 않음)
    • star.min_radius ❌ (함수가 실행되지 않음)

어떻게 구별할까요?

객체 선언을 보면 구별할 수 있습니다:

let star = {
  color: "red",                 // 일반 속성 (값)
  max_diameter: 30,             // 일반 속성 (값)
  min_diameter: 10,             // 일반 속성 (값)
  max_radius: function() {...}, // 메서드 (함수)
  min_radius: function() {...}  // 메서드 (함수)
};

메서드(함수)에만 괄호를 붙이고, 일반 속성에는 괄호를 붙이지 않으면 됩니다.

'JS' 카테고리의 다른 글

[JS] 자주 쓰는 **배열 내장 객체(Array)** 메서드 정리  (0) 2025.04.08
[JS] 객체  (0) 2025.04.07
[JS] 함수 기본 개념  (0) 2025.04.04
[JS] 자바 학습전략+반복문 기본  (0) 2025.04.03
[JS] 반복문 (기초개념)  (0) 2025.04.03