2014-11-25 3 views
1

나는 (는) 자바 스크립트를 처음 사용했습니다.JS 프로토 타입, 작은 혼동

저는 직사각형과 사각형의 영역을 찾기 위해 객체 지향 프로그램을 작성하고 있습니다. 세 가지 클래스가 있습니다 - 모양, 사각형 및 사각형. 나는 부모 클래스를 상속하고 싶다 - Shape, 자식 클래스에 - 스퀘어, 나는 프로토 타입과 관련된 문제에 부딪쳤다. 코드 : Square.prototype= new Shape();를 작성하는 클래스 광장에 클래스 모양을 상속 측면에서 충분
1. 여부 :

Square.prototype= new Shape(); 
Square.prototype.__proto__= Shape.prototype; 

내가 알고 싶습니다

?
2. 라인이 어떤 차이가 있습니까 :
Square.prototype.__proto__= Shape.prototype; 원인 클래스 Square.

도움을 주신 모든 분들께 감사드립니다.

귀하의 상속
+2

참조 (http://stackoverflow.com/q/572897/1529630) – Oriol

+2

1) 예. 2)'Square.prototype .__ proto__'가 이미'Shape.prototype'을 가리키고 있기 때문에 전혀 없습니다. 그러나 [상속을 설정하는 더 나은 방법이 있습니다] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript#Inheritance). –

+1

은 Square에 대한 클래스를 정의하기 위해 Shape의 인스턴스를 작성하는 것이 불투명 한 것처럼 보입니다. Shape 생성에 인수를 어떻게 전달해야합니까? 한마디로, JS보다 더 많은 다른 언어를 느낀다. – dandavis

답변

0

, 차라리 사용합니다 :

Square.prototype = Object.create(Shape.prototype); 
Square.prototype.constructor = Shape; 

을 이유로 이러한 종류 : Understanding the difference between Object.create() and new SomeFunction()

Square.prototype.__proto__= Shape.prototype; 좋은 방법이 아닙니다 또 다른 사용하여 객체의 프로토 타입 체인을 교체하기 때문에 원기. 이 작업은 매우 느립니다. 또한 재산 __proto__는 사용되지 않으며 언제든지 사라질 수 : [? 자바 스크립트가 작동 .prototype 않는 방법] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/proto