반응형

Prototype(프로토타입)

  • 함수는 생성될때 기본적으로 프로토타입이 만들어짐
  • 각 함수의 객체마다 변수가 생성되지 않고 공통적으로 쓰는 값이 필요할때 쓰임
  • 함수(==클래스) 고유의 전역변수, 전역함수 라고 보면 됨

 

함수선언, 객체당 변수가 각각 생성되는 형태

//함수선언(== 클래스선언)
function Person() {
  this.eyes = 2;
  this.nose = 1;
}

//객체당 변수가 각각 생성
var kim  = new Person();
var park = new Person();

console.log(kim.eyes);  // => 2
console.log(kim.nose);  // => 1
console.log(park.eyes); // => 2
console.log(park.nose); // => 1

 

프로토타입 사용

//함수선언
function Person() {}

//각 함수는 생성과 동시에 prototype이 만들어짐
Person.prototype.eyes = 2;
Person.prototype.nose = 1;

//객체당 변수 만들어지지 않음!
var kim  = new Person();
var park = new Person():
console.log(kim.eyes); // => 2

 

Object객체 안의 기본 프로토타입(toString())

//Object객체 생성
var obj = {};
var obj = new Object();
 
//Person은 Object에서 상속받은 객체라고 생각하면 됨
function Person() {} // => 함수
var personObject = new Person(); // => 함수로 객체를 생성
 
//Prototype Link, Object
function Person() {}

//Prototype Link : Person에 포함된 Object의 toString()실행
console.log(Person.prototype.toString()); // "[object Object]"

//Object의 toString() 프로토타입 재정의
Person.prototype.toString = function() { return 'myToString' }

//Prototype Object : Person의 prototype에 재정의한 toString()실행
console.log(Person.prototype.toString(); // "myToString"
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기