신규 이민자에게는 JavaScript 프로토 타입이 매우 귀찮은 일입니다. 첫째, 프로토 타입은 __proto__와 혼동하기 쉽고, 둘째, 그들 사이의 다양한 방향은 정말 복잡합니다. 실제로 시장에는 이미 많은 기사가 있습니다. 다양한 라인이 그려져있는 소위 고전적인 사진이 있으며, 이것과 그것을 연결합니다. 솔직히 말해서, 나는 그것을 완전히 이해할뿐만 아니라 내 자신을 매우 어지럽게 느낍니다. 또한 프로토 타입에서 중요한 지식 지점을 분리 할 수 있는지 확인하고 가장 간단한 차트 형식으로 명확하게 설명 할 수 있는지 직접 시도하고 싶습니다.
우리는 프로토 타입이 다른 객체가 속성 상속을 구현할 수있는 객체라는 것을 알고 있습니다. 그러나 프로토 타입 외에도 또 다른 __proto__가 사용되어 있습니까? 사람들이 비슷해 보이면 어떻게 구별 할 수 있습니까? 그들은 누구를 가리키고 있습니까? 혼돈을 어떻게 기억할 수 있습니까? 도대체 프로토 타입 체인은 무엇입니까? 경험이있는 많은 초보자들은 그것을 완전히 설명하지 못할 수도 있다고 생각합니다. 다음은 세 가지 간단한 그림과 이해할 예제 코드입니다.
1. 프로토 타입과 __proto__의 차이
var a = {}; console.log (a.prototype); //undefinedConsole.log(a.__proto__); // Object {} var b = function () {} console.log (b.prototype); // b {} console.log (b .__ proto__); //기능() {} /*1. 리터럴 메소드*/var a = {}; console.log (a .__ proto__); // Object {} console.log (a .__ proto__ === A.Constructor.Prototype); // true/*2. 생성자 메소드*/var a = function () {}; var a = new a (); console.log (a .__ proto__); // a {} console.log (a .__ proto__ === a .constructor.prototype); // true/*3. Object.create () 메소드*/var a1 = {a : 1} var a2 = object.create (a1); console.log (a2 .__ proto__); // 객체 {a : 1} console.log (a .__ proto__ === A.Constructor.Prototype); // false (이것은 그림 1의 예외입니다) var a = function () {}; var a = new a (); console.log (a .__ proto__); // a {} (즉, 생성자 함수의 프로토 타입 객체 a) console.log (a .__ proto __.__ proto__); // Object {} (즉, 생성자 함수 객체의 프로토 타입 개체) console.log (a .__ proto __.__ proto __.__ proto__); // 널위는이 기사에 관한 것입니다. 이 기사는 세 가지 그림을 사용하여 자바 스크립트의 프로토 타입 객체와 프로토 타입 체인을 설명합니다. JavaScript를 배울 때 모든 사람에게 도움이되기를 바랍니다.