property - bracket notation javascript
diferencia entre notaciĆ³n de puntos y notaciĆ³n de corchetes en javascript (2)
La notación de puntos es más rápida de escribir y más clara de leer.
La notación de corchete cuadrado permite el acceso a propiedades que contienen caracteres especiales y la selección de propiedades mediante variables.
<form id="myForm">
<div><label>
<input type="checkbox" name="foo[]" value="1"> 1
</label></div>
<div><label>
<input type="checkbox" name="foo[]" value="2"> 2
</label></div>
<div><label>
<input type="checkbox" name="foo[]" value="3"> 3
</label></div>
</form>
Ejemplo con errores:
var inputs = myForm.foo[];
La notación de corchete cuadrado, por otro lado, permite:
var inputs = myForm["foo[]"];
Dado que los corchetes son parte de una cadena, su significado especial no se aplica. La segunda ventaja de la notación de corchetes es cuando se trata de nombres de propiedades variables.
for (var i = 0; i < 10; i++) {
doSomething(myForm["myControlNumber" + i]);
}
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de entender la diferencia entre .Notation
y []
. En mi problema a continuación cuando uso if (object[key] === true)
obtengo la respuesta correcta. Cuando uso if (object.key === true)
no funciona. ¿Alguien podría explicar por qué es diferente?
var myObj = {
one: false,
two: false,
three: false,
four: true,
five: false,
six: false
};
var myFunc = function (object) {
for (var key in object) {
if (object[key] === true) {
return "There is a true value in this object";
} else {
}
}
return "Sorry, there are no true values in this object";
};
Cuando usa la notación de puntos, key
significa la propiedad real en el objeto, que no estará allí. Entonces, se devuelve undefined
que no es igual a true
.
Cuando usa la notación []
está accediendo a la propiedad en el objeto con el nombre en la key
la variable. Entonces, eso funcionará.
Por ejemplo,
var myObj = {
myVar : 1
};
for (var key in myObj) {
console.log(key);
console.log(myObj.key);
console.log(myObj[key]);
}
Esto se imprimirá
myVar
undefined
1
Porque, myObj
no tiene una key
llamada de miembro ( myObj.key
intenta obtener el miembro con la key
nombre) y en el caso siguiente, myObj
tiene un miembro llamado myVar
( myObj[key]
intenta obtener el miembro con el valor en key
) .
Notación de puntos
jslint prefiere la notación de puntos .
[] Notación
Esto ofrece flexibilidad. Puede acceder dinámicamente a los miembros con una variable.