이 기사는 JavaScript의 프로토타입 및 프로토타입 체인에 대한 간략한 소개를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
[[프로토타입]]
거의 모든 객체는 생성될 때 [[프로토타입]] 체인을 생성합니다. 이는 사람들이 종종 프로토타입 체인이라고 부르는 것입니다. [[ 객체가 트리거됩니다. Get]] 작업의 경우 기본 [[Get]] 작업의 경우 첫 번째 단계는 현재 객체에 참조하려는 속성이 있는지 찾는 것입니다. 찾을 수 없으면 이 객체의 프로토타입 체인을 검색합니다. 예:
var one = { type: 'one' } var two = Object.create(one) console.log(two.type) // one
위의 예에서는 두 객체에 유형 속성이 없지만 Object.create(새 객체를 생성함) 지정된 프로토타입 객체와 속성을 사용하여) 하나의 객체를 결합하고 두 객체가 서로 연결되어 있으므로 프로토타입 체인의 검색 과정에서 두 객체에서 유형 속성을 찾을 수 없더라도 검색은 위쪽으로 계속됩니다. type 속성은 하나의 객체에서 발견되어 인쇄됩니다. type 속성을 프로토타입 체인까지 검색하면, 발견되지 않으면 undef가 인쇄됩니다
prototype
프로토타입이 무엇인지 명확하게 설명하겠습니다. 간단한 예:
function origin(type) { this.type = type console.log(this.type) } origin.prototype.name = 'origin' var son1 = new origin('male') var son2 = new origin('male') console.log(son1.name) // origin console.log(son2.name) // origin
함수 원본의 프로토타입 속성은 실제로 son1 및 son2 프로토타입 객체 인스턴스를 가리키는 객체와 동일합니다. 따라서 name 속성이 호출되면 프로토타입 체인을 따라 검색되고 간단히 말해서, 함수의 프로토타입 객체는 인스턴스의 프로토타입을 가리킬 것입니다. 또한 son1과 son2는 인스턴스의 프로토타입 객체를 상속받는다고 할 수도 있습니다. function Origin
constructor
먼저 간단한 예를 살펴보겠습니다.
function origin() { } const son = new origin() console.log(origin.prototype.constructor === origin) // true console.log(son.constructor === origin) // true
origin.prototype에는 기본적으로 공개되고 열거 불가능한 속성인 생성자가 있으며 이 속성이 참조하는 것은 객체와 관련된 함수입니다. 그래서 Origin.prototype.construct = Origin, 그리고 인스턴스 객체 son에는 이 객체를 생성한 함수를 가리키는 construcor 속성이 있습니다
_proto_
__proto__는 실제로 내부 프로토타입 체인에 액세스하기 위해 대부분의 브라우저에서 지원하는 속성
son.__proto__ === origin.prototype // true
호출하는 son입니다. __proto__는 실제로 son.__proto__()를 호출하고 반환 값은 Object.getPrototypeOf(origin)
과 동일합니다.위 내용은 자바스크립트의 프로토타입과 프로토타입 체인에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!