Red de conocimiento del abogados - Ley de patentes - ¿Cuál es la diferencia entre _proto_ y prototipo?

¿Cuál es la diferencia entre _proto_ y prototipo?

Es hora de sacar esta imagen que atesoro durante muchos años:

1. En JS, todo es un objeto. El método (Función) es un objeto y el prototipo del método (Función.prototipo) es un objeto. Por tanto, todos tendrán las características exclusivas del objeto. Es decir: el objeto tiene el atributo proto, que puede denominarse prototipo implícito. El prototipo implícito de un objeto apunta al prototipo del constructor que construye el objeto. Esto también garantiza que la instancia pueda acceder a las propiedades y métodos definidos en. El prototipo del constructor.

2. Método (Función)

Método, un objeto especial, además de tener el atributo proto anterior como otros objetos, también tiene su propio atributo único: atributo prototipo (prototipo) , este atributo es un puntero que apunta a un objeto. El propósito de este objeto es contener las propiedades y métodos compartidos por todas las instancias (a este objeto lo llamamos objeto prototipo). El objeto prototipo también tiene un atributo llamado constructor. Este atributo contiene un puntero que apunta al constructor original.

1. Constructor Foo() El atributo prototipo Foo.prototype del constructor apunta al objeto prototipo. Hay todos los métodos en el objeto prototipo y todas las instancias declaradas por el constructor (aquí están f1, f2). ) pueden disfrutar de este método.

2. Objeto prototipo Foo.prototype

Foo.prototype guarda los métodos compartidos por la instancia y tiene un constructor puntero que apunta al constructor.

3. Instancias

f1 y f2 son dos instancias del objeto Foo. Estos dos objetos también tienen el atributo proto, que apunta al objeto prototipo del constructor, por lo que. puede ser como el anterior 1. Todos los métodos para acceder al objeto prototipo.

Además de ser un método, el constructor Foo() también es un objeto. También tiene un atributo proto. Señale el objeto prototipo de su constructor. El constructor de una función es Function, por lo que el proto aquí apunta a Function.prototype. De hecho, además de Foo (), Function () y Object (), lo mismo ocurre.

El objeto prototipo también es un objeto. ¿A quién apunta su atributo proto?

De la misma forma, apunta al objeto prototipo de su constructor. Aquí está Object.prototype

Finalmente, la propiedad proto de Object.prototype apunta a nulo.

1. El objeto tiene el atributo proto, que apunta al objeto prototipo del constructor del objeto. 2. Además del atributo proto, el método también tiene el atributo prototipo, que apunta al objeto prototipo del método.