Guía JavaScript 1.5:Sentencias de manipulación de objetos
De MDC
Tabla de contenidos |
[editar] Sentencias de manipulación de objetos
JavaScript utiliza las sentencias for...in, for each...in y with para manipular los objetos.
[editar] for...in
La sentencia for...in itera una variable especificada sobre todas las propiedades de un objeto. Por cada propiedad distinta, JavaScript ejecuta las sentencias especificadas. Una sentencia for...in se parece a lo siguiente:
for (variable in objecto) {
sentencias
}
Ejemplo:
La siguiente función toma como argumentos un objeto y el nombre del objeto. Luego itera sobre todas las propiedades del objeto y retornar una cadena que lista los nombres de las propiedades y sus valores.
function lista_propiedades(objeto, nombre_objeto) {
var resultado = "";
for (var i in objeto) {
resultado += nombre_objeto + "." + i + " = " + objeto[i] + "<br>";
}
resultado += "<hr>";
return resultado;
}
Para un objeto coche con las propiedades fabricante y modelo, el resultado sería:
coche.fabricante = Ford coche.modelo = Mustang
Arrays
si bien puede ser tentador utilizar este como una manera de iterar sobre los elementos de un Array, porque la sentencia for...in itera sobre las propiedades definidas por el usuario adicionalmente para los elementos de un array, si modifica el objeto Array, tal como añadir propiedades personalizadas o métodos, la sentencia for...in retornará el nombre de sus propiedades definidas por el usuario en adición a los índices numéricos. Así es mejor utilizar un bucle tradicional for con un índice numérico cuando itera sobre arrays.
[editar] for each...in
for each...in es una sentencia de bucle introducida en JavaScript 1.6. Es similar a for...in, pero iter sobre los valores de las propiedades del objeto, no sobre sus nombres.
[editar] with
La sentencia with establece el objeto por defecto [default] para un conjunto de sentencias. JavaScript busca por cualesquiera de los nombres no calificados dentro de un conjunto de sentencias para determinar si los nombres son propiedades del objeto por defecto. Si un nombre no calificado coincide con una propiedad, luego la propiedad es utilizada en la sentencia; caso contrario, una variable local o global es utilizada.
Una sentencia with se parece a lo siguiente:
with (objecto) {
sentencias
}
Ejemplo:
La siguiente sentencia with especifica que el objeto Math es el objeto por defecto. Las sentencias seguidas de la sentencia with se refieren a la propiedad PI y los métodos cos y sin, sin especificar un objeto. JavaScript asume el objeto Math para estas referencias.
var a, x, y;
var r = 10;
with (Math) {
a = PI * r * r;
x = r * cos(PI);
y = r * sin(PI/2);
}
Nota: Mientras utiliza una sentencia with puede hacer a su programa más conciso, el uso incorrecto de with puede significativamente volver lento su programa. Véase: La referencia de JavaScript.