동적 프로토타입 메소드_javascript 기술을 사용하여 상속 메커니즘을 표시할 수 없는 것에 대한 생각

WBOY
풀어 주다: 2016-05-16 18:40:29
원래의
1205명이 탐색했습니다.
코드 복사 코드는 다음과 같습니다.






처음에는 이것을 생각하는 것이 이상했습니다. 코드, 왜 실행할 수 없나요? 그래서 나는 저자의 이야기(이 코드에 대한 저자의 설명은 매우 복잡하고 여러 번 읽지 않으면 그가 말하는 내용을 이해할 수 없을 것입니다)를 기반으로 생각하기 시작했고 마침내 알아냈습니다.
우리는 var anObject = new aFunction() 형식으로 객체를 생성하는 과정이 실제로 3단계로 나눌 수 있다는 것을 이미 알고 있습니다.
(1) 새 객체 생성
(2) 객체의 내장 프로토타입 객체 생성자 포트타입이 참조하는 프로토타입 객체로 설정
(3) 멤버 설정 등 초기화 작업을 완료하려면 생성자를 this 매개변수로 호출합니다

단계( 2)




코드 복사

코드는 다음과 같습니다. var oTriangle1 = new Triangle(12,4);
이 문장이 실행되면 oTriangle1.prototype = Triangle.prototype이 내부적으로 실행됩니다(물론 Triangle.prototype 객체 자체에는 이때 실제 속성 및 메서드) 이후 (3) ) 단계까지 계속 실행하고, 함수 본체를 실행한 뒤, 처음으로 함수 본체를 실행하여




코드 복사

코드는 다음과 같습니다. Triangle.prototype = new Polygon()
하지만 이 문장이 실행된 후에는 oTriangle1.prototype에 더 이상 값을 할당할 수 없으며(즉, oTriangle1.prototype = Triangle을 실행할 수 없음) .prototype;) 프로그램은


코드 복사


코드는 다음과 같습니다. 하지만 지금은 너무 늦었습니다. oTriangle1.prototype 객체는 이 메소드를 소유하는 유일한 객체입니다. 방금 new Polygon()에 의해 생성되었으므로 프로그램의 마지막 주석 줄 결과가 있습니다. 하지만 다음에 생성된 Triangle 객체는 정상적으로 실행될 수 있습니다. 아래 코드를 보세요.

코드



코드 복사


코드는 다음과 같습니다.
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿