¿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.
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)
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:
explicar 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
Se 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:
- 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)
- 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
- 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