__proto__는 내부 프로토 타입이며 프로토 타입은 생성자 프로토 타입입니다 (생성자는 실제로 기능입니다)
생성자의 프로토 타입은 물체입니다
그렇다면 생성자는 무엇입니까?
객체를 만들려면 먼저 PHP와 마찬가지로 객체 생성자가 있어야합니다. 객체를 만들려면 먼저 클래스가 있어야합니다.
생성자의 본질은 함수입니다. 다음 질문은이 생성자를 통해 객체를 만드는 방법입니다.
답 : 새
생성자는 물체를 구성합니다.
1. 모든 생성자/함수의 __proto__는 기능을 가리 킵니다.
코드 사본은 다음과 같습니다.
숫자 .__ proto__ === function.prototype
// 진실
부울 .__ proto__ === function.prototype
// 진실
문자열 .__ proto__ === function.prototype
// 진실
Object .__ proto__ === function.prototype
// 진실
function .__ proto__ === function.prototype
// 진실
배열 .__ proto__ ===
function.prototype
// 진실
regexp .__ proto__ === function.prototype
// 진실
오류 .__ proto__ ===
function.prototype
// 진실
날짜 .__ proto__ ===
function.prototype
// 진실
이것은 숫자와 다른 생성자가 실제로 기능의 대상임을 보여줍니다. 즉, var number = new function ()과 동일합니다.
JavaScript에는 12 개의 내장 생성자/객체가 있으며 (JSON은 ES5에 새로 추가)에 액세스 할 수있는 8 개의 생성자가 있습니다. 나머지는 글로벌에 직접 액세스 할 수 없으며, 기능이 호출, 수학 및 JSON이 새롭게 객체 형태로 존재할 때만 인수는 JS 엔진에 의해 만 생성됩니다. 그들의 __proto__는 Object.Prototype입니다. 다음과 같이
코드 사본은 다음과 같습니다.
Math .__ proto__ === Object.Prototype
// 진실
JSON .__ proto__ === Object.Prototype
// 진실
위에서 언급 한 "모든 생성자/기능"에는 확실히 사용자 정의를 포함합니다. 다음과 같이
코드 사본은 다음과 같습니다.
// 함수 선언
기능인 ()
{}
// 함수 표현식
var man
=
기능()
{}
Console.log (person .__ proto__ === function.prototype)
// 진실
Console.log (man .__ proto__ ===
function.prototype)
// 진실
이것이 무엇을 의미합니까?
모든 생성자는 function.prototype에서 나옵니다. 심지어 루트 생성자 객체와 기능 자체를 포함합니다. 모든 생성자는 특성 및 기능의 방법을 상속합니다. 길이, 전화, 적용, 바인딩 (ES5)과 같은 것과 같은.
function.prototype는 또한 xxx.prototype의 유일한 프로토 타입입니다. 다른 생성자의 프로토 타입은 모두 객체입니다. 다음과 같이
코드 사본은 다음과 같습니다.
console.log (typeof function.prototype)
// 기능
Console.log (Object.Prototype 타입)
// 물체
console.log (typeof number.prototype)
// 물체
Console.log (boolean.prototype 타입)
// 물체
console.log (typeof string.prototype)
// 물체
Console.log (typeof array.prototype)
// 물체
Console.log (유형 regexp.prototype)
// 물체
Console.log (Error.Prototype 타입)
// 물체
Console.log (typeof date.prototype)
// 물체
Console.log (Object.Prototype 타입)
// 물체
아, 그리고 그것은 또한 비어있는 함수라는 것이 언급되어 있습니다.
모든 생성자 (내장 및 사용자 정의 포함)는 기능이라는 것을 알고 있습니다. 프로토 타입.
나는 모든 사람들이 JavaScript의 기능도 일류 시민이라고 들었습니다. 그래서 그들은 어디에서 반영 될 수 있습니까? 다음과 같이
코드 사본은 다음과 같습니다.
console.log (function.prototype .__ proto__ ===
Object.Prototype)
// 진실
이것은 모든 생성자가 또한 일반적인 JS 객체이며 생성자에 속성 등을 추가/삭제할 수 있음을 보여줍니다. 동시에 객체의 모든 방법을 상속합니다. 프로로 타입 : Tostring, Valueof, Hasownproperty 등.
object.prototype의 __proto__는 누구입니까?
코드 사본은 다음과 같습니다.
object.prototype .__ proto__ ===
null //
진실
Null을 위해 이미 정상에 도달했습니다.
__proto__와 JavaScript의 프로토 타입의 차이에 대한 이해가 있습니까? 질문이 있으시면 메시지를 남겨두고 함께 토론하겠습니다.