// 상속을 구현하는 es6 방법 : class
class 부모 {
constructor() {
this.name = "kim";
}
}
var 자식 = new 부모();
// 함수추가시
// 방법1
class 부모2 {
constructor() {
this.name = "kim";
// constructor 에 추가하든가 (자식이 직접함수를 가짐)
this.sayHi = function () {
console.log("hello");
};
}
}
var 자식2 = new 부모2();
// 방법2
class 부모3 {
constructor() {
this.name = "kim";
}
// 부모.prototype 에 추가됨
sayHi() {
console.log("hello");
}
// 함수를 이렇게 더 추가해도 되고.
sayHello() {
console.log("hello");
}
}
부모.prototype.sayGoodDay = function () {}; // 이렇게도 추가가능
var 자식3 = new 부모3();
console.log(자식3); // 부모 {name:kim}
console.log(부모.prototype); // {constructor:f, sayhi}
console.log(자식.__proto__); // {constructor:f, sayhi}
Object.getPrototypeOf(자식); // 자식.__proto__ 와 같음. {constructor:f, sayhi}
// 파라미터
class 과일 {
constructor(과일이름) {
this.name = 과일이름;
}
// 부모.prototype 에 추가됨
alim() {
console.log(this.name + "판매합니다.");
}
}
var 바나나 = new 과일("바나나를");
바나나.alim();
// 객체지향 문법, object 지향문법의 기초.
// 객체지향문법은 왜 쓰냐면
// object 여러개 만들어 쓰려는 것.
class 할아버지2 {
constructor(name) {
this.성 = "kim";
this.이름 = name;
}
sayHi() {
console.log("안녕");
}
}
class 아버지2 extends 할아버지2 {
constructor(name) {
super(name);
this.나이 = 50;
}
sayHi() {
console.log("안녕~~");
super.sayHi(); // 부모 prototype
}
}
var 아버지3 = new 아버지2("만수");
아버지3.sayHi();