property bracket javascript syntax brackets

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.