생활코딩 JavaScript 객체지향 프로그래밍 (3)

2022. 3. 6. 13:57·Web/JavaScript

 

 


 

 

class

//class 생성

/*
class Person {

}

var kim = new Person();
console.log(kim);
*/

// class constructor function

class Person {
    constructor(name, first, second){
        this.name = name;
        this.first = first;
        this.second = second;
    }
}

var kim = new Person('kim', 10, 20);
console.log('kim', kim);

// 출력값: kim Person { name: 'kim', first: 10, second: 20 }

 

class constructor

class Person {
    constructor(name, first, second){
        this.name = name;
        this.first = first;
        this.second = second;
    }
    sum(){
        return 'prototype : '+(this.first+this.second);
        }    
}

Person.prototype.sum = function(){
    return 'prototype : ' + (this.first + this.second);
}

var kim = new Person('kim', 10, 20);
var lee = new Person('lee', 10, 10);

// sum 재정의: "객체 이름"."함수 이름" = f(){}
//            sum() => sum (*****괄호 붙이지 말 것*****)
kim.sum = function(){
    return 'this : ' + (this.first + this.second);
}


console.log('kim : ', kim);
console.log('kim.sum() ', kim.sum());
console.log('lee.sum() ', lee.sum());

 

클래스 프로토타입, 상속

class Person{
    constructor(name, first, second){
        this.name = name;
        this.first = first;
        this.second = second;
    }
    sum(){
        return 'prototype : '+ (this.first + this.second);
    }
}

// 새로운 클래스 정의: 상속(inheritance)
//                   extends 사용 - 중복 제거

class PersonPlus extends Person {
    /*
    constructor(name, first, second){
        this.name = name;
        this.first = first;
        this.second = second;
    }
    sum(){
        return 'prototype : '+ (this.first + this.second);
    }
    */
    avg(){
        return (this.first + this.second)/2;
    }
}

var kim = new PersonPlus('kim', 10, 20);

console.log("kim.sum()", kim.sum());
console.log("lee.sum()", kim.avg());

 

super란?

서브(자식) 클래스에서 상위 클래스를 호출할 때 사용하는 키워드

/*
super() : 부모 클래스의 생성자에 접근
super : 부모 클래스(ex. 함수 등)의 메소드에 접근 

super가 없다면? : 자식이 부모 거 사용 못함

*/

class Person{
    constructor(name, first, second){
        this.name = name;
        this.first = first;
        this.second = second;
    }
    sum(){
        return (this.first + this.second);
    }
}

class PersonPlus extends Person {
    constructor(name, first, second, third){
        super(name, first, second) // 부모 클래스의 생성자 호출
        this.third = third;
    }
    sum(){
        return super.sum()+this.third;
        // 부모 클래스의 함수 sum 호출
    }
    avg(){
        return (this.first + this.second+ this.third)/3;
    }
}

var kim = new PersonPlus('kim', 10, 20, 30);
console.log("kim.sum()", kim.sum());
console.log("kim.avg()", kim.avg());

 

 


생활코딩으로 독학하기 ><

 

 

class - JavaScript 객체 지향 프로그래밍

수업소개 JavaScript ES6부터 포함된 Class 에 대한 소개입니다.  강의1 클래스 문법에 대한 오리엔테이션입니다.  강의2 클래스를 생성하고, 객체를 만드는 방법을 소개합니다.  코드 class.js (변경사

opentutorials.org

 

저작자표시 (새창열림)

'Web > JavaScript' 카테고리의 다른 글

자바스크립트 기초  (0) 2023.05.11
생활코딩 JavaScript 객체지향 프로그래밍 (4)  (0) 2022.03.23
생활코딩 JavaScript 객체지향 프로그래밍 (2)  (0) 2022.02.24
생활코딩 JavaScript 객체지향 프로그래밍 (1)  (0) 2022.02.12
생활코딩 JavaScript OT  (0) 2021.04.09
'Web/JavaScript' 카테고리의 다른 글
  • 자바스크립트 기초
  • 생활코딩 JavaScript 객체지향 프로그래밍 (4)
  • 생활코딩 JavaScript 객체지향 프로그래밍 (2)
  • 생활코딩 JavaScript 객체지향 프로그래밍 (1)
abyss-s
abyss-s
프론트엔드 개발합니다!
  • abyss-s
    abyss-s의 블로그입니다.
    abyss-s
  • 전체
    오늘
    어제
    • 분류 전체보기 (194)
      • Web (17)
        • JavaScript (6)
        • TypeScript (1)
        • React (6)
        • Vue (0)
        • Storybook (1)
        • Next.js (1)
      • Backend & Infra (8)
        • Database (3)
        • Node.js (2)
        • SpringBoot (1)
      • PS (71)
      • CS (30)
        • OS (13)
        • Structure & Algorithm (5)
        • Network (10)
        • 정보처리기사 (2)
      • Language (18)
        • OOP (1)
        • JAVA (13)
        • C++ (4)
      • Activities (17)
        • 멋쟁이 사자처럼 (2)
        • OSSCA (3)
        • LG U+ URECA (5)
        • Project (2)
        • Conference (2)
      • IT (3)
      • AI (0)
      • Git & Github (5)
      • Notion (1)
      • Statistics (11)
      • Book (5)
      • Diary (1)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
    • Baekjoon
    • X
    • LinkedIn
  • 공지사항

    • abyss-s의 티스토리에 오신 것을 환영합니다.
  • 인기 글

  • 태그

    통계학
    Java
    OS
    BFS
    Python
    파이썬
    네트워크
    github
    React
    JavaScript
    자바스크립트
    코드트리
    생활코딩
    운영체제
    그리디
    BAEKJOON
    C++
    자바기반응용프로그래밍
    백준
    DP
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
abyss-s
생활코딩 JavaScript 객체지향 프로그래밍 (3)
상단으로

티스토리툴바