프로토타입 / 메소드 & 속성

백아름·2023년 5월 12일
0

프론트엔드

목록 보기
16/80

프로토타입

붕어빵틀(클래스)과 붕어빵(인스턴스)

steve.__proto__

steve.__proto__constructor(창조물에 접근하는 방법)

구체적인 부모 속성의 값까지 받으려면 super라는 값을 이용해서 지정된 값을 가져올 수 있음. 선택적으로 값을 가져올 수 있음.

기본적으로 extends를 통해 부모 class를 상속받을 수 있음.

study 메소드는 human에 속해있지 않음. student에 해당하는 속성.??

메소드와 속성을 구별하기

  • 속성을 정의할 때는 constructor() 키워드를 사용하면 됨.
class Human {
	// 얘가 가질 속성을 정의하기
    constructor() {
    	this.name = '김은혜';
        this.age = 20;
    }
  • 이렇게 되면 김은혜, 20만 받게됨. 그래서 다음과 같이 작성하게 됨.
class Human {
	// 얘가 가질 속성을 정의하기
    constructor(name, age) {
    	this.name = name;
        this.age = age;
    }
  • 다음과 같이 메소드를 설정할 수 있음. sleep method.
class Human {
	// 얘가 가질 속성을 정의하기
    constructor(name, age) {
    	this.name = name;
        this.age = age;
    }
    sleep () {
    	return `${this.name}() 잠을 잡니다.`
  • 상속받는 클래스 만들기
// 휴먼 클래스를 상속받은 학생 클래스
class Student extends Human {
	constructor (name, age, grade) {
    	super(name, age)
        this.grade = grade 
    }
    study (num) {
    	this.grade = this.grade + num;
        return `${this.name}의 성적이 ${num}만큼 올라 ${this.grade}가 되었습니다.`
    }
}

const taeyoung = new Student("박태영", 20, 90)

꿀팁. 객체로 전달받기console.log({taeyoung})
이라고 치면 형태?를 다 알 수 있음.

//내가 생성된 클래스의 부모클래스를 확인하고 싶을 때
chaining 해서 접근하기.

얘는 두단계 위

taeyoung.__proto__.__proto__.constructor

얘는 한단계 위

taeyoung.__proto__.constructor

instance일 때 접근하는 법

li.__proto__

이렇게 접근해야함

  • instance일때는 instance.__proto__ 이렇게가 맞나요

class일 때 prototype 접근하는 법

  • Class 일때는 class.prototype 이렇게 치면 되는건가요?

몇번 타고 올라가야 하는지는 최상위 클래스에 접근할 수 있는지 어떻게 알수있을까요?

  • null이 나올때까지
profile
곧 훌륭해질 거에요!

0개의 댓글