>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 기술의 프로토타입 체인 프로토타입 소개

JavaScript_javascript 기술의 프로토타입 체인 프로토타입 소개

WBOY
WBOY원래의
2016-05-16 16:23:041477검색

JavaScript의 상속은 프로토타입 체인을 통해 이루어집니다. 각 개체 내부에는 프로토타입으로 또 다른 개체가 있고 개체는 이 프로토타입의 속성을 상속합니다. 각 객체에 대해 다음 세 가지 방법으로 해당 프로토타입 객체에 액세스할 수 있습니다.

1.__proto__. 객체의 프로토타입 객체는 __proto__ 속성을 통해 접근할 수 있습니다. 이 속성은 Firefox, Safari 및 Chrome에서만 지원되며 IE 및 Opera에서는 지원되지 않습니다.

2.Object.getPrototypeOf(). 객체를 Object.getPrototypeOf() 메소드에 매개변수로 전달할 수 있으며, 실행 후 객체의 프로토타입 객체가 반환됩니다. 이 방법은 ECMAScript 5 표준에서만 지원됩니다.

3.o.constructor.prototype. 먼저 객체의 생성자 함수를 얻은 다음 생성자 함수의 프로토타입 속성에 액세스하여 프로토타입 객체에 액세스합니다. 이 방법을 사용하기 위한 전제 조건은 객체의 생성자를 가리키는 생성자 속성이 있다는 것입니다.

두 객체 사이에 프로토타입 체인 관계가 있는지 확인하려면 isPrototype() 메서드를 사용할 수 있습니다.


코드 복사 코드는 다음과 같습니다.

var p = {x:1};
var o = Object.create(p);
console.log(p.isPrototypeOf(o));//true


리터럴로 생성된 모든 객체의 경우 프로토타입 객체는 Object.prototype입니다(특수 객체로서 Object.prototype에는 프로토타입 객체가 없습니다).


코드 복사 코드는 다음과 같습니다.

var x = {a:18, b:28};
console.log(x.__proto__);//객체 {}


new 연산자로 생성된 모든 객체의 프로토타입 객체는 생성자 함수의 프로토타입 속성입니다.


코드 복사 코드는 다음과 같습니다.

var x = {a:18, b:28};
함수 테스트(c){
this.c = c;
}
Test.prototype = x;
var t = new Test(38);
console.log(t);//객체 {c=38, a=18, b=28}
console.log(t.__proto__);//객체 {a=18, b=28}
console.log(t.__proto__.__proto__);//객체 {}


JavaScript에서 new 연산자를 사용하여 객체를 생성하는 과정은 다음과 같습니다.

1. 새로운 빈 개체를 만듭니다.
2. 이 객체의 __proto__ 속성이 생성자 함수의 프로토타입 속성을 가리키도록 합니다.
3. 이 개체를 이 매개 변수로 사용하여 생성자 함수를 실행합니다.

위의 생성 과정에서 동일한 생성자 함수로 생성된 모든 객체는 __proto__ 속성(즉, 프로토타입 객체)이 동일하다는 결론을 내릴 수 있습니다. 즉, 프로토타입 객체는 단 하나뿐입니다.


코드 복사 코드는 다음과 같습니다.

var t = new Test(38);
var t2 = new Test(68);
console.log(t === t2);//false
console.log(t.__proto__ === t2.__proto__);//true

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.