일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩
- JavaScript
- 자바스크립트
- 화살표함수
- useState
- 비동기
- CSS
- 리액트
- 배열
- likelion
- 메소드체이닝
- 멋쟁이사자처럼
- array
- SS
- 웹개발
- 네트워크
- 이벤트루프
- 내일배움카드
- Let
- 타입스크립트
- 멋사
- VAR
- react
- 프론트엔드
- 국비지원
- for문
- 반복문
- frontend
- 개발자
- 제주코딩베이스캠프
- Today
- Total
Ch.Covelope
ES5 prototype(프로토타입) 상속기능. 본문
Object.create()
ES5 문법 중 하나인 프로토타입 상속 기능으로 간단하게 사용 가능하다.
let parents = { name: "Oh", age: 50};
let child = Object.create(parents);
console.log(child)
let grandChild = Object.create(child);
console.log(grandChild)
상속할 부모(parents)에 속성 데이터를 할당하고
첫 번째 자식(child)에게 Object.create(parents); 을 할당하여 부모의 속성을 상속한다.
그리고 콘솔을 출력하면 {} 이렇게만 출력되는데 그건 child에 가 따로 속성 값을 부여하지 않아서 이다. 하지만 더보기 버튼을 누르면 [[Prototype]] : Object / age: 50 / name: "Oh"를 가지고 있는 걸 확인할 수 있는데 부모가 가지고 있는 속성을 child가 상속받았다는 걸 알 수 있다.
그리고 child.age를 출력하면 50 이 나오게 되는데 위에서 말한 거처럼 child가 아직 속성을 가지고 있지 않아서 age를 찾으면 child에서 먼저 찾아보고 없으면 위로 올라가 부모의 유전자에서 age를 확인하다 그리고 그곳에 age 가 있다면 그 값을 출력하게 된다.
child.age = 10이라고 값을 추가해주면 다시 출력했을 때 10이 나오는 걸 확인할 수 있다.
두 번째 손자(grandChild)에게 첫 번째 자식(child) 상속시키면 grandChild는 child 와 parents 모두의 유전자를 가지고 되고 grandChild.age 를 출력하면 현재 정의된 age 가 없기때문에 바로위 첫번째 자식(child)의 age를 찾아서 출력하게 된다.
이러한 방법으로 메소드도 상속할 수 있다.
var parents = {
age: 50,
nextAge: function(b){
return this.age + 1;
}
};
console.log(parents.nextAge()); // 51
// parents.nextAge을 호출하면 'this' 는 parents를 가리킨다.
var child = Object.create(parents);
// child 는 프로토타입을 o로 가지는 오브젝트이다.
child.age = 12; // child 에 'age'라는 새로운 속성을 만들었다.
console.log(child.nextAge()); // 13
// child.nextAge이 호출 될 때 'this' 는 'child'를 가리킨다.
// 따라서 parents의 함수 nextAge을 상속 받으며,
// 'this.age'는 child.age를 나타내며 child의 개인 속성 'age'가 된다.
참고자료
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/create
https://developer.mozilla.org/ko/docs/Web/JavaScript/Inheritance_and_the_prototype_chain
'JavaScript' 카테고리의 다른 글
객체지향 복습 OOP , 객체지향 개념정리 (0) | 2022.05.10 |
---|---|
JavaScript 자바스크립트 ES6 문법 정리하기. (0) | 2022.05.02 |
Javascript <자바스크립트> this (0) | 2022.01.27 |
Javascript <자바스크립트> call by value - reference. {콜바이벨류.콜바이레퍼런스} (0) | 2021.12.22 |
Javascript <자바스크립트> Map 메소드 사용하기. (0) | 2021.12.20 |