Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 다른 객체를 통해 객체에 접근하는 방법

JavaScript에서는 하나의 객체를 정의할 때 다른 객체의 속성값이나 메서드 실행 결과를 참조하여 새로운 객체를 만들 수 있습니다. 이렇게 하면 기존 객체에 담긴 데이터를 재활용하면서 코드 중복을 줄일 수 있습니다.

아래 예제에서는 obj라는 객체를 먼저 선언한 뒤, 두 번째 객체 obj2를 생성하면서 obj의 속성과 메서드를 활용하는 방법을 보여줍니다.

예제 코드

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
    }
    .result {
        font-size: 18px;
        font-weight: 500;
        color: rebeccapurple;
    }
</style>
</head>
<body>
<h1>JavaScript에서 다른 객체를 통해 객체에 접근하기</h1>
<div class="result"></div>
<button class="Btn">CLICK HERE</button>
<h3>위 버튼을 클릭하면 obj2의 내용이 표시됩니다.</h3>
<script>
    let resEle = document.querySelector(".result");
    let BtnEle = document.querySelector(".Btn");
    let obj = {
        firstName: "Rohan",
        lastName: "Sharma",
        welcome() {
            return "Welcome " + this.firstName + " " + this.lastName;
        },
    };
    let obj2 = {
        firstName: "Mohit",
        lastName: obj.lastName,
        welcomeString: obj.welcome(),
    };
    BtnEle.addEventListener("click", () => {
        resEle.innerHTML = "obj2.firstName = " + obj2.firstName + "<br>";
        resEle.innerHTML += "obj2.lastName = " + obj2.lastName + "<br>";
        resEle.innerHTML += "obj2.welcomeString = " + obj2.welcomeString + "<br>";
    });
</script>
</body>
</html>

코드 설명

이 예제의 핵심은 obj2 객체가 생성되는 부분입니다.

  • lastName: obj.lastNameobjlastName 속성값("Sharma")을 그대로 가져와 obj2에 할당합니다.
  • welcomeString: obj.welcome()objwelcome() 메서드를 호출한 결과 문자열("Welcome Rohan Sharma")을 저장합니다. 이때 메서드 내부의 thisobj를 가리키므로 obj의 이름 정보가 사용됩니다.

결과적으로 obj2는 자신만의 firstName("Mohit")을 가지지만, 성과 인사말은 obj로부터 물려받은 값을 사용하게 됩니다.

출력 결과

위 코드를 실행하면 버튼이 표시된 화면이 나타납니다.

JavaScript에서 다른 객체를 통해 객체에 접근하는 방법

'CLICK HERE' 버튼을 클릭하면 아래와 같이 obj2의 각 속성값이 출력됩니다.

JavaScript에서 다른 객체를 통해 객체에 접근하는 방법

  • obj2.firstName = Mohit
  • obj2.lastName = Sharma
  • obj2.welcomeString = Welcome Rohan Sharma

정리

이처럼 JavaScript에서는 객체 리터럴을 정의하는 시점에 다른 객체의 속성값(obj.lastName)이나 메서드의 반환값(obj.welcome())을 참조할 수 있습니다. 단, 이 방식은 참조 시점의 값이 복사되는 것이므로, 이후 원본 객체의 값이 변경되어도 이미 복사된 값은 바뀌지 않는다는 점을 유의해야 합니다.