function Person(name){ → 부모객체로 사용될 예정, 중복되는 코드 반영
this.name = name;
}
Person.prototype.name = null;
Person.prototype.introduce = function(){
return 'My nickname is '+this.name;
}
function Programmer(name){ → 상속받을 자식1 프로그래머
this.name = name;
}
Programmer.prototype = new Person();
Programmer.prototype.coding = function(){ → 프로그래머만의 요소 추가
return "hello world";
}
function Desinger(name){ → 상속받을 자식2 디자이너
this.name = name;
}
Desinger.prototype = new Person();
Desinger.prototype.design = function(){ → 디자이너만의 요소 추가
return "beautiful";
}
////
var p1 = new Programmer('keynene');
console.log(p1.introduce()+'\n');
console.log(p1.coding()+'\n');
////
var p2 = new Desinger('Noi');
console.log(p2.introduce()+'\n');
console.log(p2.design()+'\n');
function Ultra(){}
Ultra.prototype.ultraProp = true; →key : UltraProp, value : true인 객체를 선언한 것이라고 할 수 있음 (자식에게 상속하기 위해 prototype 이용)
////
function Super(){}
Super.prototype = new Ultra(); →Super에 Ultra 속성들 상속
////
function Sub(){}
Sub.prototype = new Super(); →Sub에 Super 속성들 상속
////
var o = new Sub(); →o에 Sub 객체 생성
console.log(o.ultraProp); →최종적으로 Sub도 Ultra의 속성 반환 가능