es6의 프로토타입 체인은 무엇입니까?

青灯夜游
풀어 주다: 2022-11-15 19:28:26
원래의
1569명이 탐색했습니다.

프로토타입 체인, 쉽게 이해하면 프로토타입으로 구성된 체인입니다. 객체의 속성에 접근할 때 객체 자체의 속성을 먼저 검색합니다. 해당 속성이 발견되지 않으면 __proto__ 암시적 프로토타입, 즉 해당 생성자의 프로토타입을 검색합니다. 그러나 생성자의 프로토타입의 __proto__에서 검색합니다. 이런 식으로 계층별로 위쪽으로 검색하면 프로토타입 체인이라고 하는 체인 구조가 형성됩니다.

es6의 프로토타입 체인은 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.

프로토타입이란 무엇인가요?

JS에서는 각 함수가 생성될 때 프로토타입 속성을 갖게 됩니다. 이 속성은 객체를 가리키는 포인터이며, 이 객체는 함수의 프로토타입 객체(즉, 프로토타입)입니다. 모든 인스턴스의 속성과 메서드를 공유하는 데 사용되는 장소이므로프로토타입은 실제로 함수의 동반자입니다(선천적)原型其实就是函数的伴生体(与生俱来的)

var a = [1, 2, 3, 4, 5]; a.__proto__ === Array.prototype; // true
로그인 후 복사

什么是原型链?

原型链,简单理解就是原型组成的链。当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype的__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链

创建一个构造函数:

function Person (name) { this.name = name } var cheng = new Person('Cheng'); var lin = new Person('Lin');
로그인 후 복사

打印cheng和lin,可以看到两个对象中都分别存在一个__proto__属性
es6의 프로토타입 체인은 무엇입니까?
es6의 프로토타입 체인은 무엇입니까?
然后发现

console.log(cheng.__proto__ === lin.__proto__); // true
로그인 후 복사

那么实例对象的这个__proto__属性到底是什么玩意?

console.log(cheng.__proto__ === Person.prototype); // true console.log(lin.__proto__ === Person.prototype); // true
로그인 후 복사

小结:实例对象有一个不可枚举的属性proto,这个属性是一个指针,指向了其构造函数的prototype也就是原型对象,实例可以通过proto访问到构造函数的原型上的方法

简单来说,实例对象的 __proto__ 指向构造函数的 prototype

es6의 프로토타입 체인은 무엇입니까?

那么,这个构造函数的原型是什么呢?

打印Person.prototype,可以看到也存在一个__proto__属性
es6의 프로토타입 체인은 무엇입니까?

console.log(Person.prototype.__proto__ === Object.prototype)
로그인 후 복사

小结:函数的原型本质就是一个普通对象,所以他是来自Object的实例,因此,原型对象的proto属性指向Object.prototype。

es6의 프로토타입 체인은 무엇입니까?

再往下找Object.prototype的__proto__是指向哪里呢?

最后发现是指向null

小结:Javascript中任意数据都能沿着自己的原型链最终找到Object.prototype

总结:

实例对象的 __proto__ 指向构造函数的 prototype,构造函数的__proto__ 指向Object的 prototype,Object的__proto__ 最终指向null

rrreee

프로토타입 체인이란 무엇인가요? ?

프로토타입 체인, 간단히 이해하면 프로토타입들로 구성된 체인입니다. 객체의 속성에 접근할 때 객체 자체의 속성을 먼저 검색합니다. 해당 속성이 발견되지 않으면 __proto__ 암시적 프로토타입, 즉 해당 생성자의 프로토타입을 검색합니다. 그러나 그런 다음 생성자의 프로토타입의 __proto__에서 검색하여 계층별로 위쪽으로 검색하면 프로토타입 체인이라고 하는 체인 구조가 형성됩니다. 생성자 만들기: rrreee cheng과 lin을 인쇄하면 두 객체 모두에 __proto__ 속성이 있음을 알 수 있습니다.
여기에 이미지 설명 삽입
여기에 그림 설명 삽입
그런 다음 rrreee를 찾았습니다. 그렇다면 인스턴스 개체의 __proto__ 속성은 정확히 무엇입니까? rrreee 요약: 인스턴스 객체에는 열거할 수 없는 속성 proto이 있습니다. 이 속성은 프로토타입 객체인 생성자의 프로토타입을 가리키는 포인터입니다. 인스턴스는 proto를 통해 생성자의 프로토타입에 액세스할 수 있습니다. 방법간단히 말하면, 인스턴스 객체의 __proto__는 생성자의 프로토타입을 가리킵니다 es6의 프로토타입 체인은 무엇입니까?그럼 이 생성자의 프로토타입은 무엇일까요? Person.prototype을 인쇄해 보면 __proto__ 속성도 있는 것을 확인할 수 있습니다
여기에 이미지 설명 삽입rrreee요약: 함수의 프로토타입은 기본적으로 일반 객체이므로 Object의 인스턴스입니다. 따라서 프로토타입 객체의 proto 속성은 Object를 가리킵니다. .원기. es6의 프로토타입 체인은 무엇입니까?더 자세히 살펴보고 Object.prototype의 __proto__가 가리키는 위치를 찾으세요. 마지막으로 null을 가리키는 것으로 확인되었습니다. 요약: Javascript의 모든 데이터는 결국 자체 프로토타입 체인을 따라 Object.prototype을 찾을 수 있습니다.

요약:

인스턴스 객체의 __proto__는 생성자의 프로토타입을 가리키고, 생성자의 __proto__는 Object의 프로토타입을 가리키며, Object의 __proto__는 최종적으로 null을 가리킵니다.[권장 학습: 고급 JavaScript 튜토리얼]

위 내용은 es6의 프로토타입 체인은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!