.prototype이 뭐냐:
prototype은 함수 객체(특히 생성자 함수)에만 존재하는 속성.
생성자 함수로 객체를 생성할 때, 이 prototype 속성이 그 객체의 프로토타입이 됨.
.prototype을 왜 쓰냐:
prototype은 모든 인스턴스가 공유할 메서드나 속성을 정의하는 데 사용됨.
예를 들어, 생성자 함수로 객체를 여러 개 생성했을 때, 이 객체들은 모두 동일한 prototype 객체를 참조함.
이를 통해 메서드나 속성을 모든 인스턴스에 공유할 수 있음.
.prototype 예시:
function Dog(name) {
this.name = name;
}
Dog.prototype.bark = function() {
console.log("Woof!");
};
//생성자 함수에 있는 프로토타입 속성
const dog1 = new Dog("Buddy");
const dog2 = new Dog("Charlie");
dog1.bark(); // "Woof!"
dog2.bark(); // "Woof!"
//prototype을 통해 `prototype`객체를 참조하여 Dog함수의 속성 공유
.__proto__이 뭐냐:
__proto__는 모든 객체에 존재하는 속성으로, 해당 객체가 상속받는 프로토타입
.__proto__을 왜 쓰냐:
모든 객체에 존재하는 속성으로, 해당 객체가 상속받는 프로토타입을 가리킴.
즉, __proto__는 객체가 "어디서부터 왔는지"를 나타내는 링크
.__proto__예시:
const dog1 = new Dog("Buddy");
console.log(dog1.__proto__ === Dog.prototype); // true
//dog1의 속성이 Dog.prototype에서 부터 왔냐의 의미
따라서 결론은 뭐냐
prototype은 생성자 함수가 새 객체를 만들 때 그 객체들이 공유할 메서드와 속성을 정의하는 데 사용됨
__proto__는 객체가 실제로 상속받고 있는 프로토타입 객체를 가리킴
프로토타입에 대한 설명은 아래 포스트:
https://hans-j.tistory.com/102
'JavaScript' 카테고리의 다른 글
[JavaScript]MSW 라이브러리 (version : 2.6.9) (1) | 2024.12.16 |
---|---|
[JavaScript]바닐라자바스크립트 컴포넌트생성하기 (0) | 2023.12.05 |
[JavaScript]Vanilla Javascript로 웹 컴포넌트 만들기 --스크랩 (1) | 2023.12.04 |
[JavaScript]비동기 작업 수행하는 코드 뜯기 (2) | 2023.11.21 |
[JavaScript ES6]map 함수, 백틱 || 문자열리터럴 (0) | 2023.09.14 |