Miembros
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Resumen
Los operadores de miembros proporcionan acceso a las propiedades y métodos de un objeto.
Un objeto es en realidad un arreglo asociativo (por ejemplo map ,dictionary ,hash ,lookup table ). Las claves en este arreglo son los nombres de las propiedades y los métodos (propiedades que hacen referencia a funciones). Hay dos modos de acceder a estas propiedades: notación por punto y notación por corchete (es decir, operador de subscripción).
Nota: La especificación ECMAScript etiqueta estos operadores como "property accessors" en vez de "operadores de miembro" (member operators).
Notación por punto
get = objeto.propiedad;
objeto.propiedad = set;
propiedad
debe ser un identificador válido de JavaScript, esto es, una secuencia alfanumérica de caracteres, incluyendo también el guión bajo ("_
") y el signo dolar ("$
"), que no puede comenzar por un número. Por ejemplo, objeto.$1
es válido, mientras que objeto.1
no lo es.
Ejemplo:
document.createElement("pre");
Aquí, el método llamado "createElement" se recupera de document
y se le llama.
Notación por corchetes
get = objeto[nombre_propiedad];
objeto[nombre_propiedad] = set;
nombre_propiedad
es una cadena. La cadena no tiene que ser un identificador válido; puede tener cualquier valor, por ejemplo "1foo", "!bar!", o incluso " " (un espacio).
Ejemplo:
document["createElement"]("pre");
Esto hace exactamente lo mismo que el ejemplo anterior.
Nombres de propiedades
Los nombres de propiedades deben ser cadenas. Esto significa que no pueden usarse objetos distintos a cadenas como claves en un objeto. Cualquier objeto que no sea una cadena, incluyendo números, se convierte al tipo cadena a través de su método Object.toString
.
Ejemplos:
var objeto = {};
objeto["1"] = "valor";
alert(objeto[1]);
Ésto tendrá como resultado "valor", ya que 1 se convertirá por tipo a '1'.
var foo = { propiedad_unica: 1 },
bar = { propiedad_unica: 2 },
objeto = {};
objeto[foo] = "valor";
alert(objeto[bar]);
Ésto también tiene como resultado "valor", ya que tanto foo como bar se convierten a la misma cadena. En el motor de JavaScript SpiderMonkey, esta cadena sería [objeto Object]
.
Enlace a métodos
Un método no está enlazado al objeto del que es método. Específicamente, this
no está establecido en un método, es decir, this
no se refiere necesariamente a un objeto conteniendo el método. this
, en cambio, se "pasa" mediante la llamada de función.
Vea enlace a métodos.
Nota sobre eval
Los principiantes en JavaScript a menudo tienen el error de usar eval
cuando la notación por corchetes puede usarse a cambio. Por ejemplo, la siguiente sintaxis se ve a menudo en muchos scripts.
x = eval("document.nombre_formulario." + cadenaControlFormulario + ".value");
eval
es lenta y se debería evitar en la medida de lo posible. Es mejor usar la notación por corchetes a cambio:
x = document.nombre_formulario[cadenaControlFormulario].value;