Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- iP
- 파이어베이스로그인
- youtube iframe
- 프로토타입
- css
- 백준
- 커스텀알락
- JS
- 커스텀알림
- mac
- 파이썬
- yarn-berry
- leetcode189
- react-firebaseui
- Python
- 자바스크립트
- nvm
- firebaseui
- 리액트
- React
- Next.js
- TCPvsUDP
- Rest
- nvmrc
- 구조분해할당
- leetcode977
- 다리놓기
- Spread
- react-native
- 기초
Archives
- Today
- Total
JadeCode
[리뷰] 프로토타입 본문
JavaScript는 프로토타입 기반 언어이다. 프로토타입(Prototype)은 원형 객체를 의미한다.
프로토타입
객체의 특성을 다른 객체로 상속하는 것을 가능하게 하는 매커니즘.
객체를 생성할 때 prototype이라는 속성이 자동으로 생성된다.
객체 자체에 상속되는 것이 아니라 prototype이라는 속성에 부모 객체의 속성과 메소드들이 정의된다.
.prototype
프로토타입 속성.
클래스명.prototype.함수를 사용하면 인스턴스 객체가 클래스에 접근이 가능하다.
객체 내부에서 어떤property를 찾는데 없으면 prototype으로 올라가서 property를 찾는다.
.__proto__
프로토타입의 객체 내부에 다 내제되어있다. 그 프로토타입을 밖으로 접근하는 접근자속성이다.
함수를 생성하면 .__proto__에 Object가 항상 생성된다.
class Human {
constructor(name, age) {
this.name = name;
this.age = age;
}
sleep() {
console.log(`${this.name}은 잠에 들었습니다`);
}
}
let jy = new Human('지영', 24);
Human.prototype.constructor === Human; //true
Human.prototype === jy.__proto__; //true
Human.prototype.sleep === jy.sleep; //true
Array(배열) 클래스와 인스턴스, 그리고 프로토타입의 관계
인스턴스 객체에서 볼 때 클래스는 인스턴스의 부모 객체이자 프로토타입 객체이다.
DOM과 프로토타입
let div = document.createElement('div');
div.__proto__ //HTMLDivElement
div.__proto__.__proto__ //HTMLElement
div.__proto__.__proto__.__proto__ //Element
div.__proto__.__proto__.__proto__.__proto__ //Node
div.__proto__.__proto__.__proto__.__proto__.__proto__ //EventTarget
div.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__ //Object
div.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__ //null
Object는 모든 클래스의 조상이며 Object.__proto__는 null이다.
프로토타입 체인이 있기 때문에 부모의 부모의 부모의 메서드를 사용할 수 있다
'개발 > 웹' 카테고리의 다른 글
[리뷰] Fetch, Axios (0) | 2022.05.31 |
---|---|
[리뷰] 비동기 (0) | 2022.05.30 |
[리뷰] 객체 지향 프로그래밍 (0) | 2022.05.26 |
[리뷰] 고차함수 (0) | 2022.05.24 |
[리뷰] Section1 회고 (0) | 2022.05.23 |
Comments