JavaScript es un lenguaje dinámico, puede agregar atributos a los objetos en tiempo de ejecución, o puede eliminar los atributos a los objetos.
La copia del código es la siguiente:
<html>
<Evista>
<script type = "text/javaScript">
/*
// 01. La primera forma de definir un objeto
var objeto = nuevo objeto ();
alerta (Object.Username);
//01.1 Agregar nombre de usuario de atributo
objeto ["nombre de usuario"] = "liujianglong";
//object.username="liujl ";
alerta (Object.Username);
//01.2 Eliminar el nombre de usuario del atributo
eliminar objeto.username; // El atributo de nombre de usuario se ha eliminado del objeto objeto
alerta (Object.Username);
*/
// 02. La segunda forma de definir objetos: la forma más común de definir objetos en JavaScript
VAR Object = {nombre: "Zhangsan", edad: 10, sexo: "fale"};
alerta (Object.name);
alerta (object.age);
alerta (objeto.sex);
</script>
</ablo>
<Body>
</body>
</html>
Nombre de la propiedad: el nombre del método también está bien. Porque la función en sí es un objeto
clasificación de matriz de JavaScript
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
varilla var = [1,3,25];
/////////////////////////////
var compare = function (num1, num2) {
var temp1 = parseInt (num1);
var temp2 = parseInt (num2);
if (temp1 <temp2) {
regreso -1;
} else if (temp1 == temp2) {
regresar 0;
}demás{
regresar 1;
}
}
//array.sort(Compare) ;//01. El nombre de la función es una referencia de objeto
////////////////////////////
// 02. Función anónima método////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Array.sort (función C (NUM1, NUM2) {
var temp1 = parseInt (num1);
var temp2 = parseInt (num2);
if (temp1 <temp2) {
regreso -1;
} else if (temp1 == temp2) {
regresar 0;
}demás{
regresar 1;
}
});
/////////////////////////////
alerta (matriz);
</script>
</ablo>
<Body>
</body>
</html>
Varias formas de definir objetos en JavaScript (JavaScript no tiene el concepto de clases, solo objetos)
El primer método: expandir sus propiedades y métodos basados en objetos existentes
La copia del código es la siguiente:
<script type = "text/javaScript">
// 01. Expandir sus propiedades y métodos basados en objetos existentes
var objeto = nuevo objeto ();
object.username = "zhangsan";
object.sayName = function (name) {
this.Username = name;
alerta (this.username);
}
alerta (Object.Username);
object.sayName ("lisi");
alerta (Object.Username);
</script>
Este método tiene limitaciones porque JavaScript no tiene el concepto de clase como Java. Si escribe una clase, entonces New puede obtener un objeto con estas propiedades y métodos.
En este momento, si desea tener Object2, solo puede escribir otra copia del código mencionado anteriormente, lo cual no es muy bueno.
El segundo método: método de fábrica
Similar a los métodos de fábrica estática en Java.
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
// Método de fábrica de objetos
var createObject = function () {
var objeto = nuevo objeto ();
object.username = "zhangsan";
objeto.password = "123";
objeto.get = function () {
alerta (this.username+","+object.password);
}
Objeto de retorno;
}
var obj1 = createObject ();
var obj2 = createObject ();
obj1.get ();
// Modificar la contraseña del objeto 2
obj2 ["contraseña"] = "123456";
obj2.get ();
</script>
</ablo>
<Body>
</body>
</html>
Hay desventajas en la creación de objetos en el método anterior (cada objeto tiene un método GET, que desperdicia la memoria) y el método mejorado de fábrica (todos los objetos comparten un método GET):
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
// Obtener método compartido por todos los objetos
var get = function () {
alerta (this.Username+","+this.password);
}
// Método de fábrica de objetos
var createObject = function (nombre de usuario, contraseña) {
var objeto = nuevo objeto ();
Object.Username = UserName;
objeto.password = contraseña;
object.get = get; // nota: los soportes del método no están escritos aquí
Objeto de retorno;
}
// Crear un objeto a través del método de fábrica
var objeto1 = createObject ("zhangsan", "123");
var object2 = createObject ("lisi", "345");
// llamando al método get
objeto1.get ();
object2.get ();
</script>
</ablo>
<Body>
</body>
</html>
El tercer método: definir un objeto por constructor
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
var get = function () {
alerta (this.Username+","+this.password);
}
Función persona (nombre de usuario, contraseña) {
// Antes de ejecutar la primera línea de código, el motor JS generará un objeto para nosotros
this.Username = UserName;
this.password = contraseña;
this.get = get;
// Aquí, hay una declaración de retorno oculta utilizada para devolver el objeto generado anteriormente [esto es diferente del patrón de fábrica]
}
Var Person = nueva persona ("Zhangsan", "123");
persona.get ();
</script>
</ablo>
<Body>
</body>
</html>
El cuarto método: crear un objeto en el método prototipo
Prototype es una propiedad en un objeto de objeto, y todos los objetos de la persona también pueden tener el prototipo de propiedad.
Puede agregar algunas propiedades y métodos al prototipo del objeto.
Desventajas de simplemente usar prototipos para crear objetos: ① No se puede pasar parámetros, solo puede cambiar el valor después de que se crea el objeto
② Los errores de programa pueden ocurrir
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
función persona () {
}
Persona.prototype.username = "zhangsan";
Persona.prototype.password = "123";
Persona.prototype.getInfo = function () {
alerta (this.Username+","+this.password);
}
VAR Person1 = nueva persona ();
var persona2 = nueva persona ();
persona1.username = "lisi";
persona1.getInfo ();
persona2.getInfo ();
</script>
</ablo>
<Body>
</body>
</html>
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
función persona () {
}
Persona.prototype.username = new Array ();
Persona.prototype.password = "123";
Persona.prototype.getInfo = function () {
alerta (this.Username+","+this.password);
}
VAR Person1 = nueva persona ();
var persona2 = nueva persona ();
persona1.username.push ("wanglaowu");
persona1.username.push ("wanglaowu2");
persona2.password = "456";
persona1.getInfo ();
persona2.getInfo ();
</script>
</ablo>
<Body>
</body>
</html>
Simplemente definiendo un objeto usando el prototipo, ya no puede asignar valores iniciales a los atributos en el constructor, y solo puede cambiar los valores de atributo después de que se genera el objeto.
El quinto método: use Prototype + Constructor para definir el objeto -----------------
Las propiedades entre objetos no interfieren entre sí
Compartir el mismo método entre los objetos
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
// usa el método prototipo + constructor para definir el objeto
función persona () {
// Definición de atributos en el constructor
this.Username = new Array ();
this.password = "123";
}
// El método se define en el prototipo
Persona.prototype.getInfo = function () {
alerta (this.Username+","+this.password);
}
var p1 = nueva persona ();
var p2 = nueva persona ();
p1.username.push ("Zhangsan");
p2.username.push ("lisi");
p1.getInfo ();
p2.getInfo ();
</script>
</ablo>
<Body>
</body>
</html>
El sexto método: método prototipo dinámico -------- Uso recomendado
En el constructor, todos los objetos comparten un método a través de la cantidad de indicador, y cada objeto tiene sus propios atributos.
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<script type = "text/javaScript">
var persona = function (nombre de usuario, contraseña) {
this.Username = UserName;
this.password = contraseña;
if (typeof persona.flag == "indefinido") {
alerta ("invocado");
Persona.prototype.getInfo = function () {
alerta (this.Username+","+this.password);
}
Persona.flag = verdadero;
}
}
var p1 = nueva persona ("zhangsan", "123");
var p2 = nueva persona ("lisi", "456");
p1.getInfo ();
p2.getInfo ();
</script>
</ablo>
<Body>
</body>
</html>