찾다

 >  Q&A  >  본문

javascript - js 범위 안전 생성자의 문제

으아아아

이 코드는 JS Height 3의 P598-599의 예입니다. 제가 묻고 싶은 것은 경고가 정의되지 않은 이유는 무엇입니까?

phpcn_u1582phpcn_u15822774일 전466

모든 응답(4)나는 대답할 것이다

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:17:29

    시작

    으아아아

    직사각형을 입력하세요. 이는 새 개체를 가리키며 object1이라고 부릅니다.

    실행

    으아아아

    object1 이름에 Polygon을 입력하세요

    으아아아

    object1의 프로토타입은 Rectangle이므로 else로 가세요

    으아아아

    Polygon을 다시 입력하세요. 이는 새 객체를 가리키며 object2라고 부릅니다.

    object2의 프로토타입은 Polygon이므로 object2에는 sidesgetArea가 제공됩니다sidesgetArea

    回到 object1 的地盘, Polygon.call(this,2); 返回 object2 ,然后…… 然后丢掉了。

    var rect=new Rectangle(5,10);

    接着赐予 object1 undefinedwidthheightgetArea

    object1의 영역으로 돌아가서 Polygon.call(this,2);는 object2를 반환하고... 그 다음에는 손실됩니다.

    으아아아

    그런 다음 object1 정의되지 않음너비, 높이getArea를 부여합니다.

    마지막으로 ret는 object1을 얻었습니다 🎜 🎜솔루션을 추가하고 Rectangle이 Polygon의 프로토타입을 공유하도록 하세요🎜 으아아아

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:17:29

    Rectangle에서 Polygon의 this는 Rectangle의 this를 가리킵니다. Rectangle이 생성자로 사용될 때 this는 Rectangle의 인스턴스, 즉 이 예에서는 ret를 나타내며 Polygon의 프로토타입은 의 프로토타입 체인에 없습니다. 즉, 이 Polygon 인스턴스는 false이므로 else의 반환 새 Polygon(sides)이 사용되며 측면은 인스턴스에 연결되지 않으므로 측면 속성이 각형 인스턴스에 존재하지 않습니다.
    직사각형(폭,높이)도 있는데 너비가 잘못 적혀있습니다

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:17:29

    귀하의 예에서 다각형은 간섭 항목이며 직사각형에는 전혀 영향을 미치지 않습니다.

    삭제 Polygon.call(this,2); 다시 보세요. 이유를 알 수 있나요

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-19 10:17:29

    • 이것을 인쇄하면 이유를 알 수 있습니다

    • this.sides=sides가 다각형에 걸려있습니다

    • 새 다각형(측면)을 반환합니다.//호출 시 더 이상 직사각형이 아닙니다

    으아아아

    회신하다
    0
  • 취소회신하다