Todo en JavaScript es un objeto: cadena, matriz, valor, función, etc. No hay concepto en JS,
Pero podemos usar las características gramaticales de JS para crear objetos con la idea de la clase.
Método original
Copiar código del código de la siguiente manera:
<script type = "text/javaScript">
var obj = nuevo objeto ();
obj.name = "koji";
obj.age = 21;
obj.showname = function () {// Agregar método al objeto
Alerta (this.name);
}
obj.showage = function () {
alerta (this.age);
}
obj.showname ();
obj.showage ();
</script>
El método anterior genera un objeto a través de la nueva palabra clave, y luego agrega las propiedades y métodos de las características del lenguaje dinámico de acuerdo con el JS.
Crear un objeto. Entre ellos, este es un objeto que llama al método.
El problema de esta manera es que si necesita crear un objeto varias veces, el código debe repetirse varias veces, lo que no es propicio para la reutilización del código.
Método de fábrica
Copiar código del código de la siguiente manera:
<script type = "text/javaScript">
función createObj () {
var obj = nuevo objeto ();
obj.name = "koji";
obj.age = 21;
obj.showname = function () {
Alerta (this.name);
}
obj.showage = function () {
alerta (this.age);
}
Regresar obj;
}
var obj1 = createObj ();
var obj2 = createObj ();
obj1.showname ();
obj2.showage ();
</script>
Este método mejora la tasa de reutilización del código, y también puede cambiar el método de fábrica y aprobar la asignación de parámetros.
Copiar código del código de la siguiente manera:
<script type = "text/javaScript">
Función createObj (nombre, edad) {// Al construir objetos, se puede pasar el parámetro de inicialización
var obj = nuevo objeto ();
obj.name = nombre;
obj.age = edad;
obj.showname = function () {
Alerta (this.name);
}
obj.showage = function () {
alerta (this.age);
}
Regresar obj;
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script>
Aunque el método anterior puede aumentar la tasa de renovación del código, tiene un gran defecto en comparación con el concepto de la clase orientada al objeto. cabeza
La imagen relativa enfatiza la propiedad del objeto, y se comparte el método del objeto. Y el método de fábrica anterior para crear el objeto entre sí
Los objetos crean sus propios métodos egoístas. Al mismo tiempo, el mismo método para crear la misma lógica para cada objeto es un desperdicio de memoria. Mejoró de la siguiente manera
Copiar código del código de la siguiente manera:
<span style = "font-size: 14px;"> <script type = "text/javaScript">
Función createObj (nombre, edad) {{
var obj = nuevo objeto ();
obj.name = nombre;
obj.age = edad;
obj.showname = showeame;
obj.showage = showage;
Regresar obj;
}
Function showeame () {// La función también es un objeto
Alerta (this.name);
}
función show () {
alerta (this.age);
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script> </span>
Los objetos de función mencionados anteriormente se definen para resolver los problemas privados de diferentes objetos de función de retención de objetos. Ahora todos los objetos son
Mantenga la referencia a las dos funciones anteriores. Pero de esta manera, la función del objeto se ha vuelto independiente e irrelevante para el objeto. Esto y
Los métodos específicos para métodos específicos orientados a objetos no cumplen con los pensamientos de categorías específicas.
Método de función de construcción
Copiar código del código de la siguiente manera:
<script type = "text/javaScript">
// Defina un constructor para generar el objeto correspondiente.
Persona persona (nombre, edad) {
// Al llamar a la nueva persona, antes de ejecutar la primera línea de código, una persona es un objeto de persona y el objeto está en la memoria
// La asignación de índice se da a esta palabra clave.
This.name = name; Para el objeto actual, es decir, la asignación de atributos de nombre del objeto a la que se hace referencia esta palabra clave
//, en realidad es equivalente a agregar la propiedad de nombre al objeto actual y luego asignar un valor a su atributo de nombre.
this.age = edad;
this.showname = function () {// Agregar método al objeto actual
Alerta (this.name);
}
this.showage = function () {
alerta (this.age);
}
// devuelve el objeto actual a la variable a la izquierda del símbolo de asignación (no es necesario usar retorno)
}
Var obj1 = nueva persona ("koji", 22);
var obj2 = nueva persona ("luo", 21);
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script>
El método para construir una función es el mismo que el método de fábrica, y creará un objeto de función exclusivo para cada objeto. Por supuesto, también puedes poner estas funciones
El objeto se define fuera del constructor, de modo que los objetos y métodos sean independientes entre sí.
Método prototipo: la propiedad prototipo del objeto utilizado por este método
Copiar código del código de la siguiente manera:
Script Type = "Text/JavaScript">
Función persona () {} // Definir una función confinida por aire y no puede pasar los parámetros
// dar todos los métodos de todos los atributos al atributo prototipo
Persona.prototype.name = "koji";
Persona.prototype.age = 22;
Persona.prototype.showname = function () {// Agregar método
Alerta (this.name);
}
Persona.prototype.showage = function () {
alerta (this.age);
}
var obj1 = nueva persona ();
var obj2 = nueva persona ();
obj1.showname ();
obj1.showage ();
obj2.showname ();
obj2.showage ();
</script>
Cuando se genera el objeto de la persona, los atributos del prototipo se asignan al nuevo objeto. Luego se comparten atributos y métodos.
El problema de este método es que el constructor no se puede pasar, y cada objeto recién generado tiene el valor predeterminado. En segundo lugar, el método compartiendo no se comparte
Cualquier problema, pero el intercambio de atributos es un problema, cuando el atributo es el objeto que puede cambiar el estado.
Copiar código del código de la siguiente manera:
<script type = "text/javaScript">
Función persona () {} // Definir una función confinida por aire y no puede pasar los parámetros
Persona.prototype.age = 22;
Persona.prototype.array = new Array ("Koji", "Luo");
Persona.prototype.showage = function () {
alerta (this.age);
}
Persona.prototype.showarray = function () {
Alerta (this.array);
}
var obj1 = nueva persona ();
var obj2 = nueva persona ();
obj1.array.push ("kyo");
obj1.showarray ();
obj2.showarray ();
</script>
Cuando el código anterior agrega elementos al atributo de OBJ1 al atributo de OBJ1, el elemento del atributo ARRA de OBJ2 también sigue
El impacto es que la propiedad de la matriz de objetos OBJ1 y OBJ2 cita el mismo objeto de matriz, así que cambie esta matriz
Objeto, el atributo del objeto de matriz se verá naturalmente afectado naturalmente
Método de constructor/prototipo mixto
Use el constructor para definir los atributos del objeto y use prototipo para definir objetos, de modo que se pueda lograr el atributo
Privado y compartir métodos.
Copiar código del código de la siguiente manera:
<script type = "text/javaScript">
Persona persona (nombre, edad) {
this.name = name;
this.age = edad;
this.array = new Array ("Koji", "Luo");
}
Persona.prototype.showname = function () {
Alerta (this.name);
}
Persona.prototype.showarray = function () {
Alerta (this.array);
}
Var obj1 = nueva persona ("koji", 22);
var obj2 = nueva persona ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
obj1.showname ();
obj2.showarray ();
obj2.showname ();
</script>
Después de que los atributos sean privados, cambiar sus respectivos atributos no afectará a otros objetos. Al mismo tiempo, el método también es compartido por cada objeto. Semánticamente,
Esto cumple con los requisitos de la programación de objetos faciales.
Prototipo dinámico
Copiar código del código de la siguiente manera:
<script type = "text/javaScript">
Persona persona (nombre, edad) {
this.name = name;
this.age = edad;
this.array = new Array ("Koji", "Luo");
// Si el _initializado en el objeto de la persona está indefinido, indica que aún no ha agregado método al prototipo de persona
ifof persona._initialized == "subfinado")
{{
Persona.prototype.showname = function () {
Alerta (this.name);
}
Persona.prototype.showarray = function () {
Alerta (this.array);
}
Person._initialized = verdadero;
}
}
Var obj1 = nueva persona ("koji", 22);
var obj2 = nueva persona ("luo", 21);
obj1.array.push ("kyo");
obj1.showarray ();
obj1.showname ();
obj2.showarray ();
obj2.showname ();
</script>
Este método es similar al constructor/prototipo. Simplemente coloque el método en el constructor, mientras que al mismo tiempo
Se agrega un atributo a la persona de funciones para asegurarse de que la declaración IF solo se pueda ejecutar con éxito una vez
El más utilizado en aplicaciones prácticas es el método constructor/prototipo. El método de prototipo dinámico también es muy popular, tiene funciones y estructura
El método de función/prototipo es equivalente. No use solo el método del constructor o prototipo.