내가 실수한 것
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
는 일반 속성(값)인데 메서드처럼 괄호()를 붙여서 호출하려고 했기 때문입니다!
객체의 요소별 괄호 사용법:
- 일반 속성(값) - 괄호 사용 안 함
star.color
✅star.max_diameter
✅star.min_diameter
✅star.color()
❌ (에러!)star.max_diameter()
❌ (에러!)star.min_diameter()
❌ (에러!)
- 메서드(함수) - 반드시 괄호 사용
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 |