Por operador de punto puede obtener acceso a valores de claves que no contienen espacios ni caracteres especiales, palabras que comienzan por número (es decir, aquellos que no pueden usarse como nombres variables); de lo contrario, puede obtener cualquier referencia para ellos como claves en la matriz asociativa.
Puede usar como clave todo lo que desee, pero recuerde que la clave será una representación de cadena de lo que ingresó. Aclaración: se llamará a String().
Look:
var myObj = {};
myObj[ 3 ] = "key is 3";
alert(myObj[ "3" ]); //alerts "key is 3" because (3).toString() is "3"
//but an error will thrown when accessing by myObj.3
myObj[ {} ] = "key is {}"
alert(myObj["[object Object]"]) // alerts "key is {}" because ({}).toString() is "[object Object]"
Puede anular toString()
método, por ejemplo:
Object.prototype.toString = function(){ return "object"}
a = {};
a[ {} ] = "whatever";
alert(a["object"]); // alerts "whatever" because as now toString() returns "object" from each created object
Si no se permitía, se obtendría un error. –