수업소개
JavaScript는 객체(인스턴스)와 객체 간의 상속 관계를 자유롭게 설정할 수 있습니다. 이 수업에서는 클래스가 아닌 객체를 통해서 상속하는 방법을 알아봅니다.
강의1
자바스크립트의 상속이 클래스 기반 언어와 어떻게 다른지 소개해드립니다.
강의2
__proto__를 이용해서 상속을 구현하는 방법을 소개합니다.
코드
prototype-inheritance.js (변경사항)
var superObj = {superVal:'super'}
var subObj = {subVal:'sub'}
subObj.__proto__ = superObj;
console.log('subObj.subVal =>', subObj.subVal);
console.log('subObj.superVal =>', subObj.superVal);
subObj.superVal = 'sub';
console.log('superObj.superVal =>', superObj.superVal);
강의3
Object.create를 이용해서 __proto__를 대체하는 방법을 소개합니다.
코드
prototype-inheritance.js (변경사항)
var superObj = {superVal:'super'}
// var subObj = {subVal:'sub'}
// subObj.__proto__ = superObj;
var subObj = Object.create(superObj);
subObj.subVal = 'sub';
debugger;
console.log('subObj.subVal =>', subObj.subVal);
console.log('subObj.superVal =>', subObj.superVal);
subObj.superVal = 'sub';
console.log('superObj.superVal =>', superObj.superVal);
강의4
기존의 예제를 상속으로 구현하는 방법을 소개합니다.
코드
prototype-inheritance.js (변경사항)
var superObj = {superVal:'super'}
// var subObj = {subVal:'sub'}
// subObj.__proto__ = superObj;
var subObj = Object.create(superObj);
subObj.subVal = 'sub';
debugger;
console.log('subObj.subVal =>', subObj.subVal);
console.log('subObj.superVal =>', subObj.superVal);
subObj.superVal = 'sub';
console.log('superObj.superVal =>', superObj.superVal);
var kim = {
name:'kim',
first:10, second:20,
sum:function(){return this.first+this.second}
}
// var lee = {
// name:'lee',
// first:10, second:10,
// avg:function(){
// return (this.first+this.second)/2;
// }
// }
// lee.__proto__ = kim;
var lee = Object.create(kim);
lee.name = 'lee';
lee.first = 10;
lee.second = 10;
lee.avg = function(){
return (this.first+this.second)/2;
}
console.log('lee.sum() : ', lee.sum());
console.log('lee.avg() : ', lee.avg());

