2014-03-13 5 views
1

왜 두 번째 패턴이 둘 다 똑같이 사용되면 둘째 패턴이 더 많이 사용됩니까? 아니면 내가 틀렸어?OO JS 상속 및 프로토 타입

function Foo1(){ 
    this.name = "Foo 1"; 
    this.hello = function(){ 
     console.log("hello", this.name); 
    }; 
} 

var test1 = new Foo1(); 
test1.hello(); 



function Foo2(){ 
    this.name = "Foo 2"; 
} 

Foo2.prototype.hello = function(){ 
    console.log("hello", this.name); 
}; 

var test2 = new Foo2(); 
test2.hello(); 
+0

먼저 인스턴스 당 익명 함수를 만들고 두 번째 프로토 타입은 프로토 타입 당 한 번 만듭니다. – zerkms

+1

두 번째는 기존 인스턴스와 새 인스턴스에서 * hello * 메소드를 대체 할 수있게합니다. 첫 번째 예에서 * hello *를 변경하면 새 인스턴스 (즉, 변경 후에 생성 된 인스턴스)의 메소드 만 변경됩니다. – RobG

+0

@ zerkms- 함수는 생성 시점에서 "익명"일 수 있지만 일단 변수에 할당되면 함수 선언에 의해 작성된 것보다 더 익명입니까? ;-) – RobG

답변

2

개체는 이런 식으로 메모리를 덜 차지합니다. 각 인스턴스에 대해 하나의 함수가 아니라 클래스에 하나의 함수 만 있어야합니다. 이것은 또한 고전적인 상속을 반영합니다.