JavaScript의 상속은 프로토 타입 체인을 통해 수행됩니다. 각 객체는 프로토 타입으로 다른 객체를 가지고 있으며 객체는이 프로토 타입에서 속성을 상속합니다. 각 객체마다 프로토 타입 객체에 액세스하는 세 가지 방법이 있습니다.
1 .__ proto__. 객체의 프로토 타입 객체는 __proto__ 속성을 통해 액세스 할 수 있습니다. 이 속성은 IE 및 Opera가 아닌 Firefox, Safari 및 Chrome에서만 지원됩니다.
2.Object.getPrototypof (). 객체를 객체를 객체로 전달할 수 있으며, 실행 후 객체의 프로토 타입 객체를 반환합니다. 이 방법은 ECMAScript 5 표준에서만 지원됩니다.
3.o.constructor.prototype. 먼저 물체의 생성자 함수를 가져온 다음 생성자 함수의 프로토 타입 속성에 액세스하여 프로토 타입 객체에 액세스하십시오. 이 방법을 사용하기위한 전제 조건은 객체의 생성자를 가리키는 생성자 속성이 있다는 것입니다.
두 객체 사이에 프로토 타입 체인 관계가 있는지 여부를 결정하려면 isprototype () 메소드를 사용할 수 있습니다.
코드 사본은 다음과 같습니다.
var p = {x : 1};
var o = object.create (p);
console.log (p.isprototypof (o)); // true
리터럴로 생성 된 모든 객체의 경우 프로토 타입 객체는 Object.Prototype입니다 (특수 객체, Object.Prototype은 프로토 타입 객체가 없습니다).
코드 사본은 다음과 같습니다.
var x = {a : 18, b : 28};
console.log (x .__ proto __); // object {}
새 연산자로 생성 된 모든 객체의 경우 프로토 타입 객체는 생성자 기능의 프로토 타입 특성입니다.
코드 사본은 다음과 같습니다.
var x = {a : 18, b : 28};
기능 테스트 (C) {
this.c = c;
}
test.prototype = x;
var t = 새로운 테스트 (38);
console.log (t); // 객체 {c = 38, a = 18, b = 28}
console.log (t .__ proto __); // 객체 {a = 18, b = 28}
console.log (t .__ proto __.__ proto __); // object {}
새 연산자를 사용하여 JavaScript에서 객체를 만드는 과정은 다음과 같습니다.
1. 새 빈 객체를 만듭니다.
2.이 개체의 __proto__ 속성을 생성자 함수의 프로토 타입 속성에 가리 킵니다.
3.이 객체를이 매개 변수로 사용하고 생성자 함수를 실행하십시오.
위의 생성 과정에서 동일한 생성자 함수로 구성된 모든 객체는 __proto__ 속성 (즉, 프로토 타입 객체)을 가지고 있다는 결론을 도출 할 수 있습니다. 즉, 하나의 프로토 타입 객체 만 있습니다.
코드 사본은 다음과 같습니다.
var t = 새로운 테스트 (38);
var t2 = 신약 (68);
console.log (t === t2); // false
console.log (t .__ proto__ === t2 .__ proto __); // true