proto와 constructor.prototype의 차이점 이해
__proto__ 속성과 __proto__ 속성의 차이점을 이해하는 것이 중요합니다. JavaScript 객체로 작업할 때 constructor.prototype.
proto 및 프로토타입 체인
모든 JavaScript 객체에는 프로토타입 객체를 참조하는 내부 __proto__ 속성이 있습니다. 생성자의. 이 프로토타입 객체에는 해당 유형의 객체에 대한 공유 속성과 메서드가 포함되어 있습니다.
데모
다음 코드를 고려하세요.
<code class="js">function Gadget(name, color) { this.name = name; this.color = color; } Gadget.prototype.rating = 3; var newtoy = new Gadget("webcam", "black");</code>
여기서 예를 들어, newtoy의 __proto__는 값이 3인 rating 속성을 갖는 Gadget.prototype을 가리킵니다. 따라서 newtoy.__proto__.__proto__.__proto__에 액세스하면 더 이상 프로토타입 객체가 없기 때문에 null이 반환됩니다.
constructor.prototype.constructor.prototype
이 복잡한 표현식은 프로토타입 체인에 직접 액세스하지 않습니다. 대신 가젯 생성자의 constructor.prototype인 constructor.prototype의 constructor.prototype에 액세스하려고 시도합니다. 이 경우에는 Gadget 생성자 자체입니다. 따라서 계속 Gadget.prototype을 가리키고 있습니다.
Internet Explorer에서 Null 확인
Internet Explorer는 __proto__ 속성을 지원하지 않습니다. 이 경우 null을 확인하려면 hasOwnProperty() 메서드를 사용하여 __proto__가 존재하는지 확인할 수 있습니다. 예:
<code class="js">if (!(newtoy.hasOwnProperty("__proto__"))) { // `__proto__` is not supported }</code>
시각적 표현
리적 설명을 돕기 위해 다음은 프로토타입 체인과 __proto__와 constructor.prototype 사이의 관계에 대한 시각적 맵입니다.
[프로토타입 체인 및 __proto__/constructor.prototype 관계 이미지]
이 단순화된 다이어그램은 JavaScript 객체의 내부 작동에 대한 포괄적인 개요를 제공하여 이러한 속성과 해당 역할 간의 구별을 명확히 하는 데 도움이 됩니다. 프로토타입 체인에 있습니다.
위 내용은 JavaScript 상속에서 proto와 constructor.prototype의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!