Tres características principales de JS orientado a objetos: encapsulación, herencia, polimorfismo
Encapsule cosas (propiedades y métodos) en clases (objetos de programa), oculte los detalles de implementación de las propiedades y métodos de las cosas y solo exponga la interfaz al mundo exterior.
1. Patrón constructor
2. Encapsulación de prototipo
3. Patrón de función de declaración
4. Patrón de fábrica
5. Cierre
Un objeto puede usar las propiedades y métodos de otro objeto (las subclases pueden usar las propiedades y métodos de la clase principal)
1. Herencia de cadena de prototipos p>
2. Préstamo de constructores
Esto evita el problema de que otras instancias cambien las propiedades o métodos en el constructor en la herencia de la cadena de prototipos
: ¿Prestar atención a la ejecución? Orden del método de llamada aquí:
El valor se sobrescribirá, ¡así que preste atención a esto!
3. Herencia combinada
Utilice la cadena de prototipos para heredar los atributos y métodos del objeto prototipo, y utilice el constructor para heredar los atributos y métodos de la instancia
De esta manera la reutilización de funciones se logra definiendo métodos en el prototipo, mientras se garantiza que cada instancia tenga sus propios atributos
4. Herencia parasitaria
La herencia parasitaria es lo mismo que la herencia prototípica A Una idea estrechamente relacionada es crear una función que simplemente encapsule el proceso de herencia, mejore el objeto de alguna manera dentro de la función y finalmente devuelva el objeto.
5. Herencia combinada parasitaria
Diferentes objetos y la misma operación producen diferentes resultados. Separe "lo que quiere hacer" de "quién lo hará" y convierta las declaraciones condicionales de procedimiento en polimorfismo de objeto, eliminando así las declaraciones de rama condicional. Hay anulación y sobrecarga:
Anulación: las subclases pueden heredar métodos de las clases principales sin reescribir los mismos métodos. Pero a veces la subclase no quiere heredar los métodos de la clase principal sin cambios, pero quiere realizar ciertas modificaciones, lo que requiere reescribir el método. La anulación de métodos también se denomina sobrescritura de métodos.
Sobrecarga: cuando las funciones o métodos tienen el mismo nombre pero diferentes listas de parámetros, dichas funciones o métodos con el mismo nombre y diferentes parámetros se denominan funciones o métodos sobrecargados.