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

JavaScript 배열 프로토타입(Array Prototype) 생성자 – 배열에 새 메서드와 속성 추가하기

JavaScript의 Array 프로토타입 생성자는 배열 객체에 새로운 메서드와 속성을 추가할 때 사용합니다. 프로토타입에 한 번 정의해 두면, 해당 메서드와 속성은 코드 전체에서 생성되는 모든 배열 객체에서 공통으로 사용할 수 있습니다.

배열 프로토타입의 동작 원리

JavaScript에서 모든 배열은 Array.prototype을 상속받습니다. 따라서 Array.prototype에 커스텀 함수를 추가하면, 별도의 유틸리티 함수를 만들지 않고도 마치 내장 메서드(push(), map() 등)처럼 자연스럽게 호출할 수 있습니다.

예제 코드

다음은 배열의 각 요소를 인덱스에 따라 번갈아가며 대문자와 소문자로 변환하는 커스텀 메서드 upperLower를 프로토타입에 추가한 예제입니다.

<!DOCTYPE html>
<html lang="en">
<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;
    }
    .sample {
        font-size: 20px;
        font-weight: 500;
    }
</style>
</head>
<body>
<h1>JavaScript Array prototype Constructor</h1>
<div class="sample"></div>
<button class="Btn">CLICK HERE</button>
<h3>
Click on the above button to convert the string to upper and lowercase
alternatively
</h3>
<script>
    Array.prototype.upperLower = function () {
        for (let i = 0; i < this.length; i++) {
            if (i % 2 == 0) this[i] = this[i].toUpperCase();
            else this[i] = this[i].toLowerCase();
        }
    };
    let fillEle = document.querySelector(".sample");
    let arr = ["H", "E", "L", "L", "O"];
    fillEle.innerHTML = arr;
    arr.upperLower();
    document.querySelector(".Btn").addEventListener("click", () => {
        fillEle.innerHTML = arr;
    });
</script>
</body>
</html>

코드 설명

  • Array.prototype.upperLower : 배열 요소를 순회하면서 짝수 인덱스는 toUpperCase()로 대문자 변환, 홀수 인덱스는 toLowerCase()로 소문자 변환하는 커스텀 메서드입니다.
  • this 키워드 : 프로토타입 메서드 내부에서 this는 해당 메서드를 호출한 배열 객체 자신을 가리킵니다.
  • 버튼 클릭 시 upperLower()가 적용된 결과가 화면에 출력됩니다.

실행 결과

페이지를 처음 열면 다음과 같이 원본 배열이 그대로 표시됩니다.

JavaScript 배열 프로토타입(Array Prototype) 생성자 – 배열에 새 메서드와 속성 추가하기

“CLICK HERE” 버튼을 클릭하면 프로토타입에 추가된 커스텀 배열 함수가 호출되어, 각 문자가 대소문자로 번갈아 변환된 결과를 확인할 수 있습니다.

JavaScript 배열 프로토타입(Array Prototype) 생성자 – 배열에 새 메서드와 속성 추가하기

정리

이처럼 Array.prototype을 활용하면 기존 배열 객체를 확장하여 재사용 가능한 커스텀 메서드를 손쉽게 만들 수 있습니다. 다만 실무에서는 내장 프로토타입 변경이 라이브러리 충돌이나 유지보수 문제를 일으킬 수 있으므로, 필요한 경우 신중하게 사용하는 것이 좋습니다.