Javascript/JS 문법
자바스크립트 prototype 이란 무엇일까?
onurmind38
2023. 2. 18. 19:08
JavaScript는 흔히 프로토타입 기반 언어(prototype-based language)라 불립니다.
모든 객체타입의 자료형(객체, 함수 ,배열)들은 메소드와 속성들을 상속 받기 위해
프로토타입 객체(prototype object)를 가진다는 의미입니다.
무슨 말인지 이해가 안되니 조금 더 쉽게 생각해봅시다.아래 두 문장은 동일하게 [ 4 , 5 , 1 ] 이라는 배열을 생성하는 방식입니다.
const arr = [4,5,1]
const arr = new Array(4,5,1)
그런데 우리는 sort() , 나 length 라는 메소드를 집어넣어 둔 적이 없습니다.
console.log(arr.sort()) // [1,4,5]
console.log(arr.length) // 3
그럼에도 불구하고 sort 나 length 가 작동하는 이유는
바로 Array 라는 자료형의 prototype 이 이러한 메소드를 소유하고 있기 때문입니다. ( 상속해줌 )
Array.prototype.sort() , Array.prototype.length()
🔥 Array 라는 자료형에 내가 만든 메소드도 추가하는 방법은?
const arr = [4,5,1]
Array.prototype.showMe = function () {
console.log(this[0])
//this 란 해당 메소드가 속한 객체를 의미합니다.
//그렇다면 여기서 객체는 [4,5,1] 이 되겠죠?
//그래서 this[0]은 4가 되는 것입니다.
}
arr.showMe() //4가 출력되게 된답니다.