JS 튜토리얼

제이에스 홈 JS 소개 JS 어디로 JS 출력 JS 문 JS 구문 JS 코멘트 JS 변수 제이에스렛 JS 상수 JS 연산자 JS 산술 JS 할당 JS 데이터 유형 JS 함수 JS 객체 JS 이벤트 JS 문자열 JS 문자열 메서드 JS 문자열 검색 JS 문자열 템플릿 JS 번호 JS 숫자 메서드 JS 배열 JS 배열 메서드 JS 배열 정렬 JS 배열 반복 JS 배열 상수 JS 날짜 JS 날짜 형식 JS 날짜 가져오기 메서드 JS 날짜 설정 방법 JS 수학 JS 랜덤 JS 부울 JS 비교 JS 조건 JS 스위치 JS 루프 In에 대한 JS 루프 의 JS 루프 JS 루프 동안 JS 브레이크 JS 이터러블 JS 세트 JS 맵 JS 유형 JS 유형 변환 JS 비트와이즈 JS 정규 표현식 JS 오류 JS 범위 JS 호이스팅 JS 엄격 모드 JS 이 키워드 JS 화살표 함수 JS 클래스 JS JSON JS 디버깅 JS 스타일 가이드 JS 모범 사례 JS 실수 JS 성능 JS 예약어

JS 버전

JS 버전 JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE / 엣지 JS 연혁

JS 객체

객체 정의 개체 속성 개체 메서드 개체 표시 개체 접근자 객체 생성자 개체 프로토타입 객체 반복 가능 객체 세트 객체 맵 개체 참조

JS 함수

기능 정의 기능 매개변수 함수 호출 함수 호출 기능 적용 함수 클로저

JS 클래스

수업 소개 클래스 상속 클래스 정적

JS 비동기

JS 콜백 JS 비동기 JS 약속 JS 비동기/대기

JS HTML DOM

DOM 소개 DOM 메서드 DOM 문서 DOM 요소 DOM HTML DOM 양식 DOM CSS DOM 애니메이션 DOM 이벤트 DOM 이벤트 리스너 DOM 탐색 DOM 노드 DOM 컬렉션 DOM 노드 목록

JS 브라우저 BOM

JS 창 JS 화면 JS 위치 JS 연혁 JS 네비게이터 JS 팝업 경고 JS 타이밍 JS 쿠키

JS 웹 API

웹 API 소개 웹 양식 API 웹 기록 API 웹 스토리지 API 웹 작업자 API 웹 가져오기 API 웹 지리적 위치 API

JS 아약스

AJAX 소개 AJAX XMLHttp AJAX 요청 AJAX 응답 AJAX XML 파일 AJAX PHP AJAX ASP AJAX 데이터베이스 AJAX 애플리케이션 AJAX 예제

JS JSON

JSON 소개 JSON 구문 JSON 대 XML JSON 데이터 유형 JSON 구문 분석 JSON 문자열화 JSON 객체 JSON 배열 JSON 서버 JSON PHP JSON HTML JSON JSONP

JS 대 jQuery

jQuery 선택기 제이쿼리 HTML 제이쿼리 CSS 제이쿼리 DOM

JS 그래픽

JS 그래픽 JS 캔버스 JS 플로틀리 JS 차트.js JS 구글 차트 JS D3.js

JS 예제

JS 예제 JS HTML DOM JS HTML 입력 JS HTML 객체 JS HTML 이벤트 JS 브라우저 JS 편집기 JS 연습 JS 퀴즈 JS 인증서

JS 참조

자바스크립트 객체 HTML DOM 객체


자바스크립트 클래스 상속


클래스 상속

클래스 상속을 생성하려면 extends 키워드를 사용하십시오.

클래스 상속으로 생성된 클래스는 다른 클래스의 모든 메서드를 상속합니다.

예시

"Car" 클래스에서 메서드를 상속할 "Model"이라는 클래스를 만듭니다.

class Car {
  constructor(brand) {
    this.carname = brand;
  }
  present() {
    return 'I have a ' + this.carname;
  }
}

class Model extends Car {
  constructor(brand, mod) {
    super(brand);
    this.model = mod;
  }
  show() {
    return this.present() + ', it is a ' + this.model;
  }
}

let myCar = new Model("Ford", "Mustang");
document.getElementById("demo").innerHTML = myCar.show();

메서드 는 super()부모 클래스를 참조합니다.

생성자 메서드에서 메서드를 호출 super()하여 부모의 생성자 메서드를 호출하고 부모의 속성과 메서드에 액세스합니다.

상속은 코드 재사용성에 유용합니다. 즉, 새 클래스를 만들 때 기존 클래스의 속성과 메서드를 재사용합니다.


게터와 세터

클래스를 사용하면 getter와 setter도 사용할 수 있습니다.

특히 값을 반환하기 전이나 값을 설정하기 전에 값으로 특별한 작업을 수행하려는 경우 속성에 대해 getter 및 setter를 사용하는 것이 현명할 수 있습니다.

클래스에 getter 및 setter를 추가하려면 getset키워드를 사용하십시오.

예시

"carname" 속성에 대한 getter 및 setter를 만듭니다.

class Car {
  constructor(brand) {
    this.carname = brand;
  }
  get cnam() {
    return this.carname;
  }
  set cnam(x) {
    this.carname = x;
  }
}

let myCar = new Car("Ford");

document.getElementById("demo").innerHTML = myCar.cnam;

참고: getter가 메서드인 경우에도 속성 값을 가져올 때 괄호를 사용하지 않습니다.

getter/setter 메서드의 이름은 이 경우 속성의 이름과 같을 수 없습니다 carname.

많은 프로그래머 _ 는 속성 이름 앞에 밑줄 문자를 사용하여 getter/setter를 실제 속성과 구분합니다.

예시

밑줄 문자를 사용하여 getter/setter를 실제 속성과 구분할 수 있습니다.

class Car {
  constructor(brand) {
    this._carname = brand;
  }
  get carname() {
    return this._carname;
  }
  set carname(x) {
    this._carname = x;
  }
}

let myCar = new Car("Ford");

document.getElementById("demo").innerHTML = myCar.carname;

setter 를 사용하려면 속성 값을 설정할 때와 동일한 구문을 괄호 없이 사용하세요.

예시

setter를 사용하여 carname을 "Volvo"로 변경합니다.

class Car {
  constructor(brand) {
    this._carname = brand;
  }
  get carname() {
    return this._carname;
  }
  set carname(x) {
    this._carname = x;
  }
}

let myCar = new Car("Ford");
myCar.carname = "Volvo";
document.getElementById("demo").innerHTML = myCar.carname;


게양

함수 및 기타 JavaScript 선언과 달리 클래스 선언은 호이스트되지 않습니다.

즉, 클래스를 사용하려면 먼저 선언해야 합니다.

예시

//You cannot use the class yet.
//myCar = new Car("Ford")
//This would raise an error.

class Car {
  constructor(brand) {
    this.carname = brand;
  }
}

//Now you can use the class:
let myCar = new Car("Ford")

참고: 함수와 같은 다른 선언의 경우 JavaScript 선언의 기본 동작이 호이스팅(선언을 맨 위로 이동)하기 때문에 선언되기 전에 사용하려고 하면 오류가 발생하지 않습니다.