11. 프로토타입 메서드와 this 바인딩
- 프로토타입 객체가 가지는 메서드 : "프로토타입 메서드" 라고 부른다.
- 객체의 메서드를 호출할 때 this바인딩과 동일하다.
-> * 객체의 메서드를 호출할 때 this 바인딩(앞 내용 다시)
- 해당 메서드를 '호출'한 객체로 바인딩된다. (프로토타입 메서드도 동일하다는 말이다.)
ex)
생성자 함수 생성 -> (자동으로)프로토타입 객체 생성 -> 객체 'A' 생성
-> 프로토타입 객체에 메서드('this가 있음.') 추가.
- > A객체에서 방금만든 메서드를 호출할 경우 this는 A에 바인딩되고, 프로토타입 체이닝을 통해 호출된다.
(생성자 함수에 없기 때문.)
- > 프로토타입 객체에서 호출 시 this는 프로토타입 객체로 바인딩된다.
11-(1). 디폴트 프로토타입은 다른 객체로 변경 가능하다.
- 디폴트 프로토타입 객체: 함수가 생성될 때 같이 생성되고, 함수의 prototype프로퍼티에 연결한다.
(생성자 함수가 생겨날 때 같이 생성되는 prototype객체를 말하는 것이다.)
- JS에서는 디폴트 프로토타입 객체를 다른 일반 객체로 변형하는 것이 가능하다.
- 생성자 함수의 프로토타입 객체가 변경되면, 변경된 시점 이후에 생성된 객체들은 변경된 프로토타입 객체로 [[Prototype]]링크를 연결한다.
- 이에 반해 생성자 함수의 프로토타입이 변경되기 이전에 생성된 객체들은 기존 프로토타입이 변경되기 이전에 생성된 객체들은 기존 프로토타입 객체로의 [[Prototype]] 링크를 그대로 유지한다.
ex)
댓글 영역