ES6 문법 - Prototype
4924 단어 JavaScriptJavaScript
Prototype
Prototype은 자바스크립트 언어에만 존재한다.
prototype은 유전자라고 받아들이면 된다.
기계(constructor)를 만들면 prototype이라는 공간이 자동으로 생긴다.
prototype에 값을 추가하면 모든 자식들이 물려받기 가능하다.
(Constructor가 부모, Constructor로 생선된 instance들이 자식)
function Machine(nic, age) {
this.name = nic;
this.age = age;
this.sayHi = function() {
console.log('안녕하세요! ' + this.name + '입니다!');
}
}
Machine.prototype.gender = '남';
//Constructor로 생성된 모든 object에 gender : '남'이 물려받는다.
let people1 = new Machine('Apeachicetea', 15);
let people2 = new Machine('kim', 20);
Machine.prototype.gender = '남';
people1에는 gender라는 속성이 없지만, people1.gender = '남'이라고 출력된다.
그 이유는 JS의 object 출력시 동작원리에 있다.
people1.gender를 작성했을때,
1. JS는 먼저 people1이 직접 gender라는 속성을 가지고 있는가를 확인 한 후 없다면,
2. people1의 부모 유전자, 즉 Constructor.prototype이 gender라는 속성을 가지고 있는가를 확인한다.
3. 그리고 있다면 실행해준다.
Prototype 특징
- prototype은 함수에만 몰래 생성된다.
- 부모의 prototype을 검사하고 싶다면
- proto를 이용해 부모 강제 등록하기
object에는 prototype이 생성되지 않는데,
아래와 같이 강제로 연결해줄 수 있다.
let parents = { name : 'kim' };
let children = {};
children.__proto__ = parents;
console.log(children.name);
콘솔창
Author And Source
이 문제에 관하여(ES6 문법 - Prototype), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@starkdy/JavaScript-ES6-신문법-Prototype저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)