이 코드는 JS Height 3의 P598-599의 예입니다. 제가 묻고 싶은 것은 경고가 정의되지 않은 이유는 무엇입니까?
曾经蜡笔没有小新2017-05-19 10:17:29
시작
으아아아직사각형을 입력하세요. 이는 새 개체를 가리키며 object1이라고 부릅니다.
실행
으아아아object1 이름에 Polygon을 입력하세요
으아아아object1의 프로토타입은 Rectangle이므로 else로 가세요
으아아아Polygon을 다시 입력하세요. 이는 새 객체를 가리키며 object2라고 부릅니다.
object2의 프로토타입은 Polygon이므로 object2에는 sides
및 getArea
가 제공됩니다sides
和 getArea
回到 object1 的地盘, Polygon.call(this,2);
返回 object2 ,然后…… 然后丢掉了。
var rect=new Rectangle(5,10);
接着赐予 object1 undefined
的 width
、height
和 getArea
Polygon.call(this,2);
는 object2를 반환하고... 그 다음에는 손실됩니다. 으아아아
그런 다음 object1정의되지 않음
의 너비
, 높이
및 getArea
를 부여합니다. 마지막으로 ret는 object1을 얻었습니다 🎜 🎜솔루션을 추가하고 Rectangle이 Polygon의 프로토타입을 공유하도록 하세요🎜 으아아아
淡淡烟草味2017-05-19 10:17:29
Rectangle에서 Polygon의 this는 Rectangle의 this를 가리킵니다. Rectangle이 생성자로 사용될 때 this는 Rectangle의 인스턴스, 즉 이 예에서는 ret를 나타내며 Polygon의 프로토타입은 의 프로토타입 체인에 없습니다. 즉, 이 Polygon 인스턴스는 false이므로 else의 반환 새 Polygon(sides)이 사용되며 측면은 인스턴스에 연결되지 않으므로 측면 속성이 각형 인스턴스에 존재하지 않습니다.
직사각형(폭,높이)도 있는데 너비가 잘못 적혀있습니다
習慣沉默2017-05-19 10:17:29
귀하의 예에서 다각형은 간섭 항목이며 직사각형에는 전혀 영향을 미치지 않습니다.
삭제 Polygon.call(this,2);
다시 보세요. 이유를 알 수 있나요
巴扎黑2017-05-19 10:17:29
이것을 인쇄하면 이유를 알 수 있습니다
this.sides=sides가 다각형에 걸려있습니다
새 다각형(측면)을 반환합니다.//호출 시 더 이상 직사각형이 아닙니다