JavaScript는 객체 지향적 인 목소리, 즉 모든 것이 객체입니다.
그렇다면 객체를 생성하는 방법? Java 세계에서는 객체가 클래스 인스턴스에 의해 생성됩니다. 평신도의 관점에서, 그들은 물건을 곰팡이로 추상화 하고이 곰팡이 (클래스)를 사용하여 특정 실제 물체 (객체)를 생성합니다.
그러나 JS에는 클래스 개념이 없습니다. 일부는 "프로토 타입"이며 객체는 프로토 타입에서 파생됩니다. 평신도의 관점에서, JS의 세계에서 "프로토 타입"은 곰팡이가 아니라 콘크리트 물체 (물체)입니다. 모든 객체는 다른 객체에서 파생 되며이 파생 된 객체는 소위 "프로토 타입 객체"입니다.
JavaScript에는 세 가지 유형의 객체, 1 개의 사용자가 만든 객체, 2 개의 생성자 객체, 3 개의 프로토 타입 객체가 있습니다.
이 세 개체 각각에는 객체의 프로토 타입을 가리키는 속성 -_proto__ 속성이 있으며, 모든 객체가 따르는 지점에서 객체로 다시 추적 될 수 있습니다.
생성자는 프로토 타입 객체를 가지고 있으며, 이는 프로토 타입 객체를 가리 킵니다. 이 생성자를 통해 개체가 생성되면 생성 된 개체의 __proto__ 속성은 생성자의 프로토 타입 속성을 가리 킵니다.
프로토 타입 객체에는 해당 생성자를 가리키는 생성자 특성이 있습니다.
대화가 싸다. 코드를 보여줘! 코드를 살펴 보겠습니다.
var obj = {}; console.log (obj);__proto__를 확장하려면 : 몇 가지 기본 방법입니다.
이 __proto__ 객체에 __proto__ 객체도있을 것입니다. 우리가 방금 말했듯이, 각 객체에는 프로토 타입 객체를 가리키는 __proto__ 속성이 있습니다. 이 __proto__에 __proto__를 인쇄합시다.
console.log (obj .__ proto __.__ proto__); //-> null
결과는 NULL이므로 최상위 프로토 타입 객체가 도착했음을 나타냅니다. OBJ는 버팀대 {}에 정의되며 OBJ의 프로토 타입 객체는 자연스럽게 JS의 최상위 객체입니다.
우리의 이해를 강화하기 위해 한쪽의 코드를 살펴 보겠습니다.
var parent = {name : "parent"}; var child = {name : "child", __proto__ : parent}; var subchild = {name : "subchild", __proto__ : child} console.log (subchild);