__proto__,prototype, constructor 사이의 관계
function Foo(){}
let f1 = new Foo()
간단하게 말하면 위의 코드는 구조 함수Foo를 만들고 new의 실례화 대상 f1을 만드는 것을 나타낸다.조금 복잡한 것은 함수가 호출될 때 대상을 새로 만들고 구조 함수의 작용역을 새 대상에게 부여하는 것이다. (따라서 이 때 함수 내부this는 새로 만든 대상을 가리킨다.)비록 간단한 두 줄 코드이지만, 그들의 배후 관계는 복잡하게 뒤섞여 있기 때문에 나는 그림을 찾지 않을 것이다.(나는 보기 싫어서 너무 번거롭다) 나는 직접 글로 군말을 했다.
1._ _proto _ _등록 정보
우리는 명심해야 한다.proto _ _속성은 대상만 가지고 있는 것이다. 그는 대상에서 다른 대상을 가리킨다. 작용은 대상의 속성에 접근할 때 이 속성이 존재하지 않으면 를 통해proto__속성이 가리키는 대상에서 찾기, 찾기, 찾기, 원형 체인의 끝까지null, 이 찾는 여정이 통과할 때까지proto__속성이 하나의 체인을 형성하였는데, 이를 원형 체인이라고 한다
2. prototype 속성
이것은 함수만이 가지고 있는 것이다. 그는 하나의 함수에서 하나의 대상을 가리킨다. 그의 의미는 바로 함수의 원형 대상이다. 즉, 이 함수가 만든 실례의 원형 대상이다. f1.proto _ _===Foo.prototype의 역할은 특정 유형의 모든 실례가 공유할 수 있는 속성과 방법을 포함하고 이 함수를 실례화할 수 있는 대상을 포함하여 공용적인 속성과 방법을 찾을 수 있도록 하는 것이다.
3. constructor 속성
constructor도 대상만 가지고 있으며 그도 대상이 하나의 함수, 즉 이 대상을 가리키는 구조 함수이다.constructor는 모든 실례화 대상이 가지고 있는 속성이지만 이렇게 말하면 정확하지 않다. 실례화 대상 f1 자체는constructor 속성을 갖추지 못한다. 그는 를 통해proto__원형 체인에서 찾는 속성, f1.proto _ ===Foo.prototype, 그래서Foo.prototype은 constructor 속성이 있기 때문에 f1.proto_ ===Foo.prototype,
Foo.prototype.constructor===Foo
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.