자바스크립트 프로토타입

프로토타입

  • 모든 함수는 prototype 프로퍼티를 가짐
  • prototype은 해당 참조 타입의 인스턴스가 가져야할 프로퍼티와 메서드를 담고 있는 객체
  • prototype의 프로퍼티와 메서드는 객체 인스턴스 전체에서 공유

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function Person() {

    }

    Person.prototype.name = "Nicholas";
    Person.prototype.age = 29;
    Person.prototype.job = "Software Engineer";
    Person.prototype.sayName = function() {
    alert(this.name);
    }

    var person1 = new Person();
    person1.sayName(); // Nicholas

    var person2 = new Person();
    person2.sayName(); // Nicholas

    alert(person1.sayName == person2.sayName); // true
  • constructor 프로퍼티는 프로토타입에만 존재

  • 객체 인스턴스에서 프로토타입의 값은 읽을 수 있지만 수정 불가
  • 프로토타입의 프로퍼티와 같은 이름의 프로퍼티를 인스턴스에 추가하면 해당 프로퍼티는 프로토타입까지 가지 않음

프로토타입2

  • 모든 객체의 조상은 함수
  • 함수 정의시 prototype object도 같이 생성
  • prototype object는 constructor와 prototype link(proto)를 가지고 있음

-https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67