toggle-toggle / javascript-basic

🌱우아한 테크코스 프론트엔드 자바스크립트 기초 스터디 입니다.
9 stars 0 forks source link

[2021.03.18] New, 생성자, InstanceOf, Instance #9

Open ddongule opened 3 years ago

ddongule commented 3 years ago

✨ 생성자 함수

특징

생성자와 return문

생성자 함수에는 보통 return문이 없다. 반환해야 할 것들은 모두 this에 저장이 되고, this는 자동으로 반환되기 때문에 굳이 명시적으로 써 줄 필요가 없다. 그렇지만, 만약 return이 있는 생성자 함수라면 어떨까?

✨ Instance

쉽게 말해서, 현재 사용된 그 객체를 말한다. Object를 사용해 새로운 Object를 생성하면, Object가 반환되는데, 이 반환된 Object를 Instance라고 부른다. new 연산자를 이용해 Object를 생성하고, 변수에 할당할 수 있다. (변수에 할당된 Object가 Instance)

✨ Instance of

  1. objClass에 속하거나 Class를 상속받는 클래스에 속하면 true

    class Rabbit {}
    let rabbit = new Rabbit();
    
    // rabbit이 Class Rabbit의 객체인가요?
    alert( rabbit instanceof Rabbit ); // true
  2. 생성자 함수에서도 사용할 수 있음

    // 클래스가 아닌 생성자 함수
    function Rabbit() {}
    let rabbit = new Rabbit();
    
    alert( new Rabbit() instanceof Rabbit ); // true
  3. Array 같은 내장 클래스에서도 사용할 수 있음

    let arr = [1, 2, 3];
    
    alert( arr instanceof Array ); // true
    alert( arr instanceof Object); // true
    
    // 여기에서 arr은 Array에도 속하지만, Object에도 속함
    // Array는 프로토타입 기반으로 Object를 상속받기 때문

Instanceof의 동작

유사 메서드 - isPrototypeOf

function Hour() { ... } Hour.prototype = new Minutes();

function Day() { ... } Day.prototype = new Hour();

function Week() { ... } Week.prototype = new Day();

var week = new Week();

// Week instance의 prototype Chain이 Hour과 연결되어있는지 확인 if (Day.prototype.isPrototypeOf(week)) { ... }