자바스크립트는 프로토타입 기반 객체지향 프로그래밍 언어다.
클래스 없이도 객체를 생성할 수 있다.
자바스크립트의 모든 객체는 자신의 부모 역할을 하는 객체와 연결되어 있다.
객체 지향의 상속 개념과 같이 부모 객체의 프로포티, 메소드를 상속받아 사용 가능하다.
이때의 부모 객체를 prototype객체 줄여서, prototype 이라 한다.
즉, 프로토타입은 원형(유전자)라는 뜻이다.
함수 객체에는 프로토타입이라는 특수한 유형의 객체 프로퍼티가 존재한다.
이러한 prototye 프로퍼티를 통해 생성자 함수는 인스턴스에게 프로토타입 객체에 있는 데이터, 메소드를 상속한다.
prototype객체는 생성자 함수에 의해 생성된 각각의 객체에 공유 프로퍼티를 제공하기 위해 사용한다.
내가 원형일 때 존재한다.
함수 객체만 가지고 있다.
따라서,
arr = [1,2,3] 일때
Array.prototype 은 [constructor: ƒ, at: ƒ, concat: ƒ, copyWithin: ƒ, fill: ƒ, …] 이렇게 나오고 왜냐하면 Array는 원형이니까
arr.prototype은 undefined 이렇게 나온다.
모든 객체가 가지고 있다.
하나의 link로 표현
위의, arr.prototype은 undefined 였고,
arr.proto는 [constructor: ƒ, at: ƒ, concat: ƒ, copyWithin: ƒ, fill: ƒ, …] 값이 나온다.
그러니까proto로 prototype 객체의 값에 접근할 수 있음을 알 수 있다.
다른 내용을 참조해도, 아직 잘 모르겠음