자바스크립트에서 함수는
객체
이다. 따라서 객체는prototype
을 가진다.
예를들어 Person함수를 정의했을때
function Person(name,first,second){
this.name = name;
this.first = first;
this.second = second;
}
Person이라는 새로운 객체가 생성되는것이다.
Person객체에는 객체에 더하여 Person의 prototype
객체가 생성된다.
Person's prototype
을 가리키고 Person의 prototype객체는 constructor
프로퍼티를 생성해 Person객체를 가리킨다.이에 더하여 kim 객체를 생성하고, Person의 prototype객체에 sum
함수를 추가해줬다.
Person.protytpe.sum = function(){}
var kim = new Person('kim',10,20);
__proto__
가 생성되었다. __proto__
는 kim 객체를 생성한 Person객체의 prototype 객체를 가리킨다.kim 객체의 name의 출력이 가능하다.
console.log(kim.name)
__proto__
- 모든 객체가 가지고 있다.
- 하나의 Link 라고 할 수 있다.
prototype
- 함수 객체만 가지고 있다.
- 생성자를 가지는 원형으로 선언 할 수 있다.