JAVASCRIPT 생성자와 프로토타입이 서로를 가리키는 데 문제가 있습니까? 돕다! ! !
大家讲道理
大家讲道理 2017-07-05 10:43:41
0
4
943

최근에 js 프로토타입의 문제를 보고 기본적으로 이해했는데, 콘솔에서 열어보니 아주 이상한 문제가 발견되었습니다

. 으아아아

컨트롤에 코드를 입력하면 이유가 있습니다

으아아아

Persion.prototype 프로토타입 객체의 생성자는 Persion()을 가리키고 생성자 Persion의 프로토타입은 프로토타입 객체를 가리킵니다.
이것은 js에서 무한 루프인가요? 내 이해에 문제가 있습니까?

온라인에서 찾은 사진입니다. 문제는 빨간색 부분이 루프를 가리키고 있습니다.

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

모든 응답(4)
淡淡烟草味

초대해 주셔서 감사합니다. 방금 이 문제에 관심을 갖고 있었습니다. . 당신은 나를 초대했습니다. .

여기에 실제로 순환 참조가 있다는 것만 알고 있으며 이는 브라우저에 계속 표시되지만 메모리의 한 레이어일 뿐이므로 문제가 없습니다.

学霸

먼저 참조 변수와 객체라는 두 가지 개념을 명확히 합시다. 참조 변수의 상호 참조의 큰 부분에는 실제로 두 개의 객체만 포함됩니다.
객체 ObjP(프로토타입 객체)와 객체 Objf(함수 객체)라고 부르겠습니다. objp를 가리키는 객체 objf에는 p 속성이 있습니다. q의 메모리 구조는 두 부분으로 구성됩니다. 한 부분은 해당 속성 이름 "p"를 보유하고 다른 부분은 objp의 주소를 보유합니다.
마찬가지로, objf를 가리키는 객체 objp에는 f 속성이 있습니다.

예를 들어 두 개의 휴대폰 A와 B는 서로의 휴대폰 번호 b와 a를 저장합니다. A는 A.b를 통해 B에게 전화를 걸 수 있고, B는 B.a를 통해 A에게 전화를 걸 수 있습니다. 셀 수 없이 많은 전화를 주고받을 수 있지만 휴대전화는 두 대뿐입니다. 그들 사이에는 상호 연결이 있지만 연결 자체는 리소스를 거의 차지하지 않습니다. 추가 리소스 소모는 전화 통화 시에만 발생합니다.

우리가 보는 구조는 브라우저에게는 의미가 없으며 단지 우리가 볼 수 있는 관계를 시각화할 뿐입니다. A가 B의 휴대폰 번호를 가지고 있다는 것을 다른 사람에게 증명하고, 당신 앞에서 전화를 거는 것처럼요. 당신에게는 더 좋습니다. 당신은 항상 사람들이 당신을 앞뒤로 이길 수 있도록 허용합니다. 사실, 계속해서 클릭을 하지 않으면 브라우저는 그렇게 지루한 일을 하지 않을 것입니다.
'상호인용'은 언제 끝나나요? , 이른바 골치 아픈 일도 없고, 휴대전화 번호를 저장하는 것은 시간 문제일 뿐이며, 계속해서 전화를 주고받아야 하는 것이 가장 괴로운 일이다.
즉, 더 이상 클릭하지 않으면 브라우저는 이에 대처하기 위해 objp와 objf가 계속 "서로 참조"하도록 허용할 필요가 없습니다

女神的闺蜜爱上我

이것은 단지 두 개체 간의 상호 참조일 뿐입니다.

으아악

결과가 표시됩니다:

사실 객체는 2개뿐인데 해당 속성을 확장할 때마다 해당 객체를 인쇄하는 것과 동일해야 하며, 객체 a와 b를 계속해서 교대로 인쇄하면 결과는 이렇게 됩니다

.
滿天的星座

Person.prototype.constructor == Person //true
크롬 콘솔에 출력한 것은 Person.prototype입니다
Person.prototype.constructor -->Person
을 열고 Person.protorype.constructor.prototype --> Person.prototype
Person.prototype.constructor.prototype.constructor를 다시 열었습니다 -->Person
Person.protorype.constructor.prototype.constructor.prototype을 열었습니다 -->Person.prototype
.. .......

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿