수업소개
JavaScript는 객체(인스턴스)와 객체 간의 상속 관계를 자유롭게 설정할 수 있습니다. 이 수업에서는 클래스가 아닌 객체를 통해서 상속하는 방법을 알아봅니다.
강의1
자바스크립트의 상속이 클래스 기반 언어와 어떻게 다른지 소개해드립니다.
강의2
__proto__를 이용해서 상속을 구현하는 방법을 소개합니다.
코드
prototype-inheritance.js (변경사항)
1 2 3 4 5 6 7 | 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 (변경사항)
1 2 3 4 5 6 7 8 9 10 | 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 (변경사항)
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 31 32 33 34 35 | 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()); |