Descripción general
¿De qué estamos hablando cuando estamos hablando de programación orientada a objetos?
Primero hablamos sobre algunos conceptos: objetos, clases, encapsulación, herencia, polimorfismo.
Los objetos y las clases son la base de la encapsulación, la herencia y el polimorfismo orientados a objetos, son las tres características principales de la programación orientada a objetos.
JavaScript proporciona objetos pero carece de clases, y no puede definir explícitamente una clase como C#.
Sin embargo, las funciones de función de JavaScript son muy flexibles, una de las cuales es el constructor, que puede implementar "clases" en combinación con constructores y objetos prototipo.
Conceptos de objetos y clases
Objeto
"Objeto" es un concepto muy importante en la programación orientada a objetos. Un objeto es una descripción de una "cosa" (alguien o algo).
Las personas y las cosas provienen de la vida real, y nuestra comprensión del mundo real es nuestra comprensión de las personas y las cosas.
En el campo de la programación, el código es abstracto para las personas comunes, y la aplicación del código es resolver mejor los problemas del mundo real.
Durante las fases de análisis y diseño, el concepto de "objeto" puede reflejar mejor los problemas del mundo real.
Por el contrario, el código contiene cierta lógica, que se utiliza para describir el negocio. El negocio contiene algunos conocimientos comerciales. El conocimiento empresarial se resume a través de la comprensión y el análisis del mundo real. Estos problemas están compuestos de "objetos" en el mundo real.
Los objetos contienen características y comportamientos. En términos OOP, las características son atributos de objetos, y los comportamientos son métodos de objetos.
amable
En el mundo real, se pueden agrupar objetos similares de acuerdo con ciertos estándares. Por ejemplo, "colibríes" y "águilas" se dividen en pájaros. Las aves no son objetos específicos. Son un concepto resumido por las personas después de analizar características y comportamientos similares basados en aves específicas como "colibríes" y "águilas". Una clase es equivalente a una plantilla, y podemos crear diferentes objetos específicos basados en esta plantilla.
En C#, podemos definir un pájaro.
/// <summary> //// Birds /// </summary> public class Bird {public void fly () {console.writeLine ("¡Puedo volar!"); }}Aunque JavaScript es un lenguaje de programación orientado a objetos, no proporciona soporte de sintaxis para la clase.
En JavaScript, todo se basa en objetos. Incluso el "prototipo" del que hablaremos más tarde son objetos. La herencia y la reutilización de JavaScript también se implementan a través de prototipos.
Sin embargo, combinar constructores y objetos prototipo puede implementar las "clases" de JavaScript.
Constructor
Anteriormente, usamos New Array () para crear una matriz y usamos nuevo objeto () para crear un objeto. Array () y Object () son dos constructores incorporados en JavaScript. Aunque JavaScript no proporciona clases, podemos entender la matriz y el objeto como el concepto de "clases".
Cabe señalar que el constructor implementa la "clase" de JavaScript.
Definir el constructor
Los constructores también son funciones, y no existe una diferencia de sintaxis entre definir constructores y otras funciones.
La única diferencia es que la primera letra del constructor debe ser capitalizada, que también es la especificación de programación de JavaScript.
Lo siguiente define un constructor de persona (), que podemos entender como la clase de persona.
function persona () {console.log ('Soy Keepfool.');}La "clase" y el constructor de JavaScript se definen al mismo tiempo. Al definir "clase" en JavaScript, el constructor se define al mismo tiempo.
Usando constructores
JavaScript utiliza clases de la misma manera que C#, con la nueva palabra clave seguida del constructor.
var p = nueva persona ();
Definir atributos y métodos
Ahora que hemos definido la clase de persona, podemos agregar algunas propiedades y métodos a la clase de persona.
Definir atributos
Cuando hablamos de objetos JavaScript, hablamos sobre la configuración de la propiedad y el acceso de los objetos.
Este código muestra dos formas de definir las propiedades del objeto:
var cat = {color: 'negro'}; cat.name = 'tom'; console.log (cat.color); console.log (cat.name);Use esto para definir atributos
El método de definición de atributos de la clase JavaScript es algo diferente. Use esta palabra clave para definir atributos en el constructor:
Función Persona (nombre) {this.name = name;}• La primera línea de código define la clase de persona y define el constructor.
• La segunda línea de código define el atributo de nombre.
Crear y usar objetos
Las siguientes 2 líneas de código crean objetos de clase de dos personas
var p1 = nueva persona ('james'); var p2 = nueva persona ('curi');Salida P1.Name y P2.Name in Chrome Console
P1 y P2 son dos objetos diferentes, modificar P1. El nombre no afectará P2.Name.
p1.name = 'LeBron James';
Defina el método
Primero, distinguemos los términos "función" y "método". "función" es una unidad independiente, mientras que el "método" depende de la existencia de la clase como sujeto.
Use esto para definir métodos
En JavaScript, el método de clase es definir la función en el constructor y usar esta palabra clave para definir el método en el constructor:
Función Persona (nombre) {// Defina el atributo this.name = name; // Defina el método this.sayhello = function () {return 'Hello, soy' + this.name;}}Cómo usar
Llame al método sayhello () de los objetos p1 y p2 respectivamente en la consola Chrome
atributo de constructor
Cuando se crea un objeto, JavaScript asigna automáticamente una propiedad especial al objeto, y esta propiedad es la propiedad del constructor.
Ingrese p1.constructor en la consola Chrome y puede ver que la propiedad del constructor del objeto P1 apunta a una función.
Mire el contenido de esta función, ¿no es este el constructor Person ()?
Esto significa que también podemos crear objetos a través de la propiedad P1.Constructor,
var p3 = new P1.Constructor ('Steve Nash');Esta línea de código explica una oración: "No me importa cómo se cree el objeto P1, ¡pero quiero que se cree otro objeto como P1!"
Usando la instancia del operador en la consola Chrome, puede ver que P1, P2 y P3 son todas las instancias de clase de persona
Además, cuando creamos el objeto de manera {} , el constructor Object () realmente se llama.
var o = {};Esta línea de código declara un objeto. Aunque no establecemos ninguna propiedad y método, el motor JavaScript establece el atributo del constructor de forma predeterminada.
o.constructor señala el constructor Object (), [native code] muestra que Object () es una función incorporada en JavaScript.
Objeto prototipo
En JavaScript, al definir una función, la función tendrá un atributo prototipo, y el constructor no es una excepción.
La siguiente figura muestra que la propiedad prototipo del constructor persona () es un objeto, que pertenece a la función , y llamamos a esta propiedad un objeto prototipo.
Desde la perspectiva de la clase de persona, también podemos entender que el atributo prototipo pertenece a la clase de persona.
Al mismo tiempo, la instancia de la clase de persona no tiene un atributo prototipo. El P1.prototipo en la figura anterior está indefinido, lo que significa que el atributo prototipo se comparte, que es un poco como el atributo estático en C#.
Configuración de prototipo
Dado que el prototipo es un objeto, puede agregarle propiedades y métodos.
La definición de propiedades y métodos en la propiedad prototipo de una función no es diferente de la configuración de propiedades y métodos de objetos ordinarios.
El siguiente código define propiedades y métodos para persona. Prototipo.
Funcion Person (name) {this.name = name; this.sayhello = function () {return 'Hello, I Am' + this.name;}} // Defina propiedades y métodos en el prototipo de objeto de prototipo del constructor. Persona ('James');Usando prototipo
Propiedades y métodos prototipos definidos en persona. El prototipo se puede usar directamente por instancias de la clase de persona y todavía se usan en forma de object.property .
Cabe señalar que name y sayHello() son instancias que pertenecen a la clase de la persona, mientras que height y run() son instancias que no pertenecen a la clase de la persona.
Consejos: puede verificar si el objeto contiene una determinada propiedad o método a través del método de HaswnProperty.
Atributos prototipo
Una instancia de clase de persona puede usar ambas propiedades en la clase de persona y las propiedades en persona. Prototype.
Entonces, ¿cuál es la diferencia entre las propiedades de la clase de persona y las propiedades de la persona. Prototipo?
Primero, podemos entender las propiedades y métodos en la clase de la persona como "propiedades de instancia".
Dado que el prototipo se comparte, podemos entender las propiedades y métodos en prototipo como "propiedades compartidas".
La diferencia entre "atributos de instancia" y "atributos compartidos" se refleja principalmente en el rendimiento.
Cada vez que se cree una instancia de persona, se generará una copia del atributo de nombre y el método sayhello (), y el atributo de altura y el método run () compartirán una copia de todas las instancias.
Siendo ese el caso, esto significa que el método sayhello () se puede mencionar en el prototipo.
Además, la altura de instancia de persona diferente puede ser diferente, por lo que debería ser más razonable ponerla en la clase de la persona.
Funcion Person (nombre, altura) {this.name = name; this.height = Height;} persona.prototype.sayhello = function () {return 'Hello, I Am' + this.name + ', mi altura es' + this.height + 'cm.';} persona.prototype.run = function () {return 'i am' + this.name + ', estoy rentando!'; nueva persona ('James', 203); var p2 = nueva persona ('Cury', 190);Resumen de implementación de clases
JavaScript no tiene clases, pero los constructores pueden implementar "clases".
Según las especificaciones de programación de JavaScript, la primera letra del constructor debe capitalizarse.
Las propiedades y métodos de "clase" se definen en el constructor en este método.
Cuando se crea la creación de objetos, JavaScript asigna el atributo de constructor al objeto. El atributo del constructor es una referencia a la función del constructor de objeto.
La función ya tiene un atributo prototipo cuando se define, y el atributo prototipo también es un objeto.
El prototipo se comparte, y las propiedades y métodos definidos en el prototipo pueden usarse mediante instancias de la "clase".
Si las propiedades o métodos pueden definirse en el prototipo, no las defina en los constructores. Usar prototipo puede reducir la sobrecarga de memoria.
El artículo anterior sobre los detalles de implementación de clase JavaScript OOP son todo el contenido que he compartido con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.