2013-04-17 1 views
1

prototype을 사용하는 것과 사용하지 않는 것의 차이점은 무엇입니까? 그들은 분명히 똑같이합니다. prototype프로토 타입을 사용하거나 사용하지 않는 차이점 : 분명히 동일한 것으로 보입니다.

:

function poligon(angles){ 
    this.angles = angles; 
} 
poligon.prototype.color = function(){ return "blue"; } 

var mypol = new poligon(14); 

alert(mypol.color()); 

prototype없이 :

function poligon(angles){ 
    this.angles = angles; 
} 
poligon.color = function(){ return "blue"; } 

var mypol = new poligon(12); 

alert(poligon.color()); 

는 정말 prototype와 그것을하지 않고 "컬러"개체를 추가하는 무엇을 의미합니까?

+0

이전의 포스트는 프로토 타입이 꽤 좋은 http://stackoverflow.com/questions/12064104/prototype-keyword-in-javascript 설명 – AurA

답변

2

예, 자바 스크립트 프로토 타입을 도입했을 때 항상 그렇지는 않습니다.

프로토 타입에 메서드를 추가하면 해당 프로토 타입을 상속 한 모든 단일 개체에 해당 지점의이 함수가 적용됩니다. 이 경우 클래스/함수 'poligon'이이 프로토 타입을 상속하는 유일한 클래스 일 것입니다.

차이점은 사용자가 rectangle.prototype = poligon.prototype;을 선언하는 새로운 유형 인 '직사각형'을 선언 할 때입니다. 이제 사각형 클래스는 poligon 프로토 타입에 선언 된 모든 메서드를 상속합니다.이 메서드는 방금 'poligon'에 메서드를 추가 한 경우에는 적용되지 않습니다.

상속은 javascript에서 다르게 작동하며 고전적인 OOP 언어에서 오는 경우 매우 혼란 스럽습니다.

1

프로토 타입을 사용하면 차이가 없지만 Poligon 개체에서 파생 된 새 개체를 만들 때 프로토 타입이 유용합니다.

Poligon.print = function() {}; 
new Poligon().print(); // Has no method print 

Poligon.prototype.print = function() {}; 
new Poligon().print(); // Tah dah! 
관련 문제