Hay varios modos en JS que pueden crear objetos y operar las propiedades y métodos contenidos en el objeto.
En términos generales, la primera letra del nombre del constructor es una letra mayúscula, y la primera letra del nombre no constructor es una letra minúscula. Por supuesto, la única diferencia entre un constructor y una función general es la diferencia en la forma de llamar. Por lo tanto, siempre que cualquier función se llame a través de la nueva, puede usarse como constructor. Si no se llama a través de nuevo, es lo mismo que una función general.
Déjame hablar sobre mi comprensión de estos patrones:
Modo de fábrica: cree una función general, cree un objeto de objeto en la función, agregue atributos y métodos al objeto, asigne su valor y finalmente devuelva el objeto. El tipo de objeto no se puede reconocer.
Modo de constructor: cree un constructor, use esto para asignar valores, y cada vez que se crea una instancia, el método se crea una vez, y cada método ejecuta el mismo comando, que es redundante. Esta desventaja se puede hacer poniendo el método en el entorno global, pero de esta manera no hay encapsulación. Sin embargo, se puede resolver a través del modo prototipo.
Patrón de prototipo: cada función tiene una propiedad prototipo, que es un puntero, que apunta a un objeto que contiene propiedades y métodos compartidos por todas las instancias creadas por su función.
La relación entre objetos prototipo, constructores e instancias es la siguiente:
Ilustración: 1: El constructor y las instancias creadas por el constructor, sus atributos prototipo apuntan al objeto prototipo del constructor.
2: El objeto prototipo del constructor tiene el atributo del constructor, que apunta al constructor.
3: Todas las propiedades y métodos contenidos en el objeto prototipo del constructor pueden compartirse por todas las instancias creadas por el constructor.
Después de reescribir el objeto prototipo usando el objeto literal, el constructor apunta al constructor del objeto. Si se requiere señalar a otro constructor, debe modificar el valor del atributo de constructor del objeto prototipo, como: constructor: persona. De esta manera, incluso si el objeto prototipo de persona se reescribe, el constructor del objeto prototipo todavía apunta al constructor de la persona.
Al crear una instancia primero: si agrega propiedades o métodos directamente, se puede acceder a la instancia.
Si el objeto prototipo se reescribe, el prototipo del constructor apunta al nuevo objeto prototipo, mientras que el prototipo de la instancia creado previamente todavía apunta al objeto prototipo original, por lo que la instancia no puede acceder a las nuevas propiedades o los nuevos métodos del nuevo objeto prototipo.
El objeto prototipo contiene propiedades y métodos compartidos, por lo que cada instancia tiene esta información, por lo que no hay diferencia entre instancias y no se pueden pasar parámetros, que no es lo que queremos. Cada instancia tiene información común e información diferente, por lo que podemos usar una combinación de modo constructor y modo prototipo.
Use una combinación de modo constructor y modo prototipo:
Patrón de prototipo de estado: combine constructores independientes con sus objetos prototipo, inicialice el prototipo en el constructor y agregue métodos.
Si el método no existe, se agrega al objeto prototipo y se ejecuta solo cuando se inicializa el prototipo, y solo una vez.
Modo de constructor parásito: similar al modo de fábrica, la diferencia es: el modo de constructor parasitario es un constructor, y las instancias se crean a través de NUEVO.
Patrón de constructor estable: no hay propiedades públicas, y sus métodos no se refieren a este objeto. No se usa nuevo al crear una instancia. Solo el acceso a las propiedades (es decir, datos entrantes) se realiza a través de métodos.
La introducción anterior a varios modos de objetos de creación de JavaScript es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.