본문 바로가기
교육후 개인공부/JavaScript

[JS] prototype, __proto__

by 뭉지야 2024. 1. 25.
728x90

부모 객체의 프로퍼티나 메서드를 가져와서 사용 => 상속

객체간의 상속을 구현하기위해 => 프로토타입을 사용

 

 

프로토타입 = 상위객체 = 부모객체

let arr = new Array();

 

Array 객체를 arr배열의 프로토타입이라고 한다.

 

 

생성자 함수를 선언하는 순간, 자동으로 프로토타입 객체가 만들어진다.

 

const Book = function(title, pages, done){
  this.title = title;
  this.pages = pages;
  this.done = done;
  this.finish = function(){
    this.done === false ? str = "읽는중" : str = "완독";
    return str;
  }
}

const book1 = new Book("웹 표준의 정석", 483, false);

 

book1 객체는 Book객체의 인스턴스이다.

book1의 프로토타입은 생성자함수 Book()을통해 만들어진 객체이다.

즉, book1 객체의 프로토타입은  Book 프로토타입 객체이다.

 

 

 

객체의 프로토타입을 확인할때는 __proto__ 프로퍼티를 사용하고,

생성자 함수의 프로토타입을 확인할때는 prototype 프로퍼티를 사용한다.

 

 __proto__ 프로퍼티는 모든 객체가 가지고 있는 프로퍼티이다. 자신에게 연결된 부모 프로토타입 객체를 확인할때 사용한다.

 

 

기존의 생성자 함수에 있던 프로퍼티와 메서드를 다른 생성자 함수에서 가져와 사용할때는 call() 메서드를 사용하는데, 여기에서 this는 새로 만드는 객체를 가리킨다.

기존 객체명.call(this, 프로퍼티 또는 메서드)

 

Book.call(this, title, price)


//새로 만드는 객체에서 Book 객체의 title과 price 프로퍼티를 가져와서 사용할때

 

 

 

 

다른 객체를 프로토타입으로 지정하려면 Object 객체의 setPropertyOf()  메서드를 사용한다.

 

Object.setPrototypeOf(하위 객체, 상위 객체)

 

Object.setPrototypeOf(Textbook.prototype, Book.prototype);


//Textbook 프로토타입을 Book 프로토타입으로 연결한다

 

 

 

기존의 클래스를 상속받아서 사용할때

class 새클래스명 extends 기존클래스명

 

class B extends A


// B클래스가 A클래스를 상속받을때
// A가 부모, B가 자식

 

728x90

'교육후 개인공부 > JavaScript' 카테고리의 다른 글

[JS] 객체의 키와 값에 접근하기  (0) 2024.01.25
[JS] 생성자함수, 클래스, 인스턴스  (0) 2024.01.25
[JS] 객체  (2) 2024.01.25
스코프 (미완성)  (0) 2024.01.02