

어떤 생성자 함수를 new 연산자와 함께 호출하면
Constructor에서 정의된 내용을 바탕으로 새로운 인스턴스가 생성된다.
이때 instance에는 proto 라는 프로퍼티가 자동으로 부여되는데,
이 프로퍼티는 Constructor의 prototype이라는 프로퍼티를 참조한다.
proto 는 생략 가능한 프로퍼티이다.
piri.__proto__.getName
-> piri.(.__proto__).getName
-> piri.getName

그러면 만약 인스턴스에 동일한 이름의 프로퍼티 또는 메서드를 가지고 있다면
**const Person = function(name) {
this.name = name;
}
Person.prototype.getName = function() {
console.log(this.name);
}
const piri = new Person('piri');
piri.getName = function () {
console.log('vv', this.name);
}
piri.getName(); // vv piri**

var arr = [1,2];
arr(.__proto__).push(3); // Array prototype
arr(.__proto__)(.__proto__).hasOwnProperty(2); // Object prototype
프로토타입 체인이라 한다프로토타입 체이닝 이라고 한다.