JavaScript 객체 지향 프로그래밍

객체 간의 상속

수업소개

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());

 

댓글

댓글 본문
작성자
비밀번호
  1. 감사합니다.
  2. 어쩌다보이
    Object.create() 는 ()속 상위객체의 메소드를 상속한다.. 맞나요?
  3. hyuna lee
    Object.create() 좋네요.
    일요일에도 듣고 가요~
graphittie 자세히 보기