Rectangle에서 Polygon의 this는 Rectangle의 this를 가리킵니다. Rectangle이 생성자로 사용될 때 this는 Rectangle의 인스턴스, 즉 이 예에서는 ret를 나타내며 Polygon의 프로토타입은 의 프로토타입 체인에 없습니다. 즉, 이 Polygon 인스턴스는 false이므로 else의 반환 새 Polygon(sides)이 사용되며 측면은 인스턴스에 연결되지 않으므로 측면 속성이 각형 인스턴스에 존재하지 않습니다. 직사각형(폭,높이)도 있는데 너비가 잘못 적혀있습니다
시작
으아아아직사각형을 입력하세요. 이는 새 개체를 가리키며 object1이라고 부릅니다.
실행
으아아아object1 이름에 Polygon을 입력하세요
으아아아object1의 프로토타입은 Rectangle이므로 else로 가세요
으아아아Polygon을 다시 입력하세요. 이는 새 객체를 가리키며 object2라고 부릅니다.
object2의 프로토타입은 Polygon이므로 object2에는
sides
및getArea
가 제공됩니다sides
和getArea
回到 object1 的地盘,
Polygon.call(this,2);
返回 object2 ,然后…… 然后丢掉了。接着赐予 object1
object1의 영역으로 돌아가서undefined
的width
、height
和getArea
Polygon.call(this,2);
는 object2를 반환하고... 그 다음에는 손실됩니다.으아아아
그런 다음 object1정의되지 않음
의너비
,높이
및getArea
를 부여합니다.Rectangle에서 Polygon의 this는 Rectangle의 this를 가리킵니다. Rectangle이 생성자로 사용될 때 this는 Rectangle의 인스턴스, 즉 이 예에서는 ret를 나타내며 Polygon의 프로토타입은 의 프로토타입 체인에 없습니다. 즉, 이 Polygon 인스턴스는 false이므로 else의 반환 새 Polygon(sides)이 사용되며 측면은 인스턴스에 연결되지 않으므로 측면 속성이 각형 인스턴스에 존재하지 않습니다.
직사각형(폭,높이)도 있는데 너비가 잘못 적혀있습니다
귀하의 예에서 다각형은 간섭 항목이며 직사각형에는 전혀 영향을 미치지 않습니다.
삭제
Polygon.call(this,2);
다시 보세요. 이유를 알 수 있나요이것을 인쇄하면 이유를 알 수 있습니다
this.sides=sides가 다각형에 걸려있습니다
새 다각형(측면)을 반환합니다.//호출 시 더 이상 직사각형이 아닙니다