La comprensión en profundidad del prototipo prototipo JavaScript y cadena de prototipo

¿Qué es un prototipo?

Una vez que hay una función para crear una propiedad prototipo que apunta a un objeto que es el objeto prototipo, el objeto prototipo.
Resumen: El prototipo es un objeto que el objeto prototipo.
Aquí Insertar imagen Descripción
papel Prototype es: compartir método
constructor cuando se crea una instancia del objeto, cada instancia de un objeto va a crear un espacio abierto para las propiedades y métodos constructor, como sigue:

var Person = function(name,age){
	this.name = name;
	this.age = age;
	this.eat = function(){
		console.log("吃饭")
	}
}
var p1 = new Person()
var p2 = new Person()

P1 y P2 tienen el método de comer (), que se crea dos veces, y las mismas funciones lógicas, sólo direcciones diferentes, causando así la redundancia del código, ocupan memoria, afectan el rendimiento
con el fin de resolver el problema anterior, el método de escribir en público objeto prototipo, la función de todos los objetos instanciados puede método directamente el acceso a objetos prototipo

var Person = function(name,age){
	this.name = name;
	this.age = age;
}
Person.prototype.eat = function(){
	console.log("吃饭")
}
console.log(Person)

Aquí Insertar imagen Descripción

Relación entre estructura y función, objeto prototipo, una instancia de objeto de los tres

var Person = function(name,age){
	this.name = name;
	this.age = age;
}
Person.prototype.eat = function(){
	console.log("吃饭")
}
var ws = new Person("小花",5)

Persona constructor anterior ejemplo:
Aquí Insertar imagen Descripciónexplicar aquí lo __proto__ y función constructora:
como cada función tiene un prototipo prototipos de objetos, cada objeto tendrá un __proto__, llamado el prototipo objeto. Apunta al constructor objeto prototipo.
Ya sea prototipo o __proto__ tener una función constructor se refiere de nuevo a la constructor
puede verse en el gráfico:

console.log(Person.prototype.constructor === Person)    //true
console.log(ws.__proto__ === Person.prototype)          //true
console.log(ws.__proto__.constructor === Person)        //true

cadena de prototipo

Aquí Insertar imagen DescripciónSe ve en la figura:

console.log(Person.prototype.__proto__ === Object.prototype)    //true
console.log(Object.prototype.constructor === Object)            //true
console.log(Object.prototype.__proto__)                         //null

Encontrar un objeto regla es encontrar miembros a lo largo de la cadena de prototipos

Cuando se accede a una propiedad de objeto o método:

  1. No hay una primera encontrar el objeto en sí, hay salidas a encontrar, oa lo largo de la cadena de prototipo de búsqueda (__proto__ prototipo prototipo puntos del objeto)
  2. A continuación, busque el constructor de objetos prototipo no tenía, no habría retirar encontrar, o encontrar a lo largo de la cadena de prototipos
  3. Aspecto del objeto prototipo constructor no lo hay, no sale de encontrar otra manera encontrar a lo largo de la cadena de prototipo hasta el final de NULL
Publicado cinco artículos originales · ganado elogios 6 · vistas 69

Supongo que te gusta

Origin blog.csdn.net/qq_22841567/article/details/104611122
Recomendado
Clasificación