__proto__,prototype, constructor 사이의 관계

1283 단어 js면접 시험
저녁에 야근을 하다가 갑자기 이 문제가 생각나서 정리를 했습니다. 만약에 남의 자식을 해치는 곳이 있다면 우정으로 지적해 주세요!삼가 가르침을 받들겠습니다!(#.#) 다음 항목으로 바로 이동합니다.
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

좋은 웹페이지 즐겨찾기