__proto__ es un prototipo interno, y el prototipo es un prototipo de constructor (el constructor es en realidad una función)
El prototipo del constructor es un objeto
Entonces, ¿qué es un constructor?
Para crear un objeto, primero debe tener un constructor de objetos, como en PHP. Para crear un objeto, primero debe tener una clase
La esencia de un constructor es una función. La siguiente pregunta es: ¿Cómo crear un objeto a través de este constructor?
Respuesta: Nuevo
El constructor construye un objeto.
1. El __proto__ de todos los constructoras/puntos de las funciones para funciones. Proprotype, que es una función vacía (función vacía)
La copia del código es la siguiente:
Número .__ proto__ === function.prototype
// verdadero
Booleano .__ proto__ === Función.prototipo
// verdadero
Cadena .__ proto__ === Función.prototype
// verdadero
Objeto .__ proto__ === Función.prototype
// verdadero
Función .__ Proto__ === Función.Prototype
// verdadero
Matriz .__ proto__ ===
Function.prototype
// verdadero
Regexp .__ proto__ === function.prototype
// verdadero
Error .__ Proto__ ===
Function.prototype
// verdadero
Fecha .__ proto__ ===
Function.prototype
// verdadero
Esto muestra que el número y otros constructores son en realidad objetos de función. Es decir, es equivalente a var número = new function ();
Hay 12 constructores/objetos incorporados en JavaScript (JSON se agrega recientemente en ES5), y aquí hay 8 constructores a los que se puede acceder. El resto es que no se puede acceder directamente a Global, el motor JS solo crea los argumentos cuando las llamadas de funciones, las matemáticas y el JSON existen en forma de objeto, sin nuevo. Su __proto__ es objeto.prototype. como sigue
La copia del código es la siguiente:
Math .__ Proto__ === Object.Prototype
// verdadero
JSON .__ Proto__ === Object.Prototype
// verdadero
Los "todos los constructores/funciones" mencionados anteriormente ciertamente incluyen los personalizados. como sigue
La copia del código es la siguiente:
// Declaración de funciones
Función persona ()
{}
// Expresión de funciones
var hombre
=
función()
{}
console.log (persona .__ proto__ === function.prototype)
// verdadero
console.log (hombre .__ proto__ ===
Function.prototype)
// verdadero
¿Qué quiere decir esto?
Todos los constructores provienen de function.prototype, e incluso incluyen el objeto y la función del constructor raíz en sí. Todos los constructores heredan las propiedades y métodos de función. Como longitud, llamada, aplicar, vincular (ES5).
Function.prototype también es el único prototipo con typeof xxx.prototype como "función". Los prototipos de otros constructores son todos objetos. como sigue
La copia del código es la siguiente:
console.log (typeof function.prototype)
// función
console.log (typeof object.prototype)
// objeto
console.log (typeof number.prototype)
// objeto
console.log (typeof boolean.prototype)
// objeto
console.log (typeof string.prototype)
// objeto
console.log (typeof array.prototype)
// objeto
console.log (typeof regexp.prototype)
// objeto
console.log (typeof error.prototype)
// objeto
console.log (typeof date.prototype)
// objeto
console.log (typeof object.prototype)
// objeto
Ah, y también se menciona anteriormente que es una función vacía, échale un vistazo en alerta (function.prototype).
Sé que todos los constructores (incluidos los incorporados y personalizados) son funciones. Prototipo, entonces, ¿quién es __proto__ de función.
Creo que todos han escuchado que las funciones en JavaScript también son ciudadanos de primera clase, entonces, ¿dónde se pueden reflejar? como sigue
La copia del código es la siguiente:
console.log (function.prototype .__ proto__ ===
Object.prototype)
// verdadero
Esto muestra que todos los constructores también son objetos JS ordinarios, y pueden agregar/eliminar atributos, etc. al constructor. Al mismo tiempo, también hereda todos los métodos en Object.Prototype: ToString, ValueOf, HaswnProperty, etc.
¿Quién es __proto__ de Object.prototype?
La copia del código es la siguiente:
Object.prototype .__ Proto__ ===
nulo //
verdadero
Ya ha llegado a la cima, para NULL.
¿Tiene alguna comprensión de la diferencia entre __proto__ y el prototipo en JavaScript? Si tiene alguna pregunta, deje un mensaje y déjanos discutirlo juntos