En JavaScript, puede leer y escribir la propiedad del objeto a través del operador DOT ". o el operador de soporte "[]":
La copia del código es la siguiente:
var o = {x: 1, y: 2};
console.log (ox); // 1
console.log (o ["y"]); // 2
oy = 7;
console.log (o ["y"]); // 7
Vale la pena señalar que si se usa el operador del soporte, el tipo de valor en el operador debe ser cadena o una expresión que se puede convertir en una cadena:
La copia del código es la siguiente:
console.log (o [y]); // referenceError: y no está definido
var v = "y";
console.log (o [v]); // 7
A diferencia del lenguaje Java, las propiedades de los objetos en JavaScript se pueden agregar o eliminar dinámicamente. Al asignar una propiedad, si la propiedad no existe, JavaScript agregará dinámicamente esta propiedad al objeto:
La copia del código es la siguiente:
Oz = 99;
console.log (o); // objeto {x = 1, y = 7, z = 99}
Lectura de la propiedad en la cadena de herencia prototipo
Todos los objetos en JavaScript tienen un objeto prototipo prototipo y heredan la propiedad del objeto prototipo; Por lo tanto, las propiedades de un objeto en JS se dividen en dos categorías:
1. La propiedad propiedad del objeto mismo ("propiedad propia").
2. Propiedad heredada del objeto prototipo.
Al leer la propiedad de un objeto, las reglas seguidas son las siguientes:
1. Busque la propiedad que debe leerse de la colección de propiedades del objeto ("propiedad propia"); Si se puede buscar, leerá directamente la propiedad y devolverá su valor.
2. Si la propiedad no se puede buscar desde la colección de propiedades del objeto ("propiedad propia"), continúe buscando desde la cadena prototipo prototipo del objeto hasta que se busque la propiedad y se devuelva su valor.
3. Si no se puede buscar la propiedad en la colección de propiedades del objeto ("propiedad propia") y la propiedad no se puede buscar en todos los objetos prototipo del objeto, entonces se devuelve indefinido.
Escribir propiedad en la cadena de herencia prototipo
Al escribir en la propiedad de un objeto JavaScript, las reglas seguidas son las siguientes:
1. Si el objeto en sí tiene la propiedad y la propiedad es redactada, escriba el nuevo valor a la propiedad. Si la propiedad es de solo lectura, se informa un error.
2. Si el objeto en sí no tiene la propiedad y no existe en todos sus objetos prototipo, agregue esta propiedad al objeto.
3. Si el objeto en sí no tiene la propiedad, pero la propiedad existe en su objeto prototipo y es redonda, entonces JS creará esta propiedad en el objeto; es decir, el objeto anula la propiedad en su objeto prototipo. Este valor de propiedad en el objeto prototipo permanece sin cambios.
4. Si el objeto en sí no tiene la propiedad, pero la propiedad existe en su objeto prototipo y es de solo lectura, se informará un error.
5. Si el objeto en sí no tiene la propiedad, pero el método Setter de la propiedad existe en su objeto prototipo, entonces JS llamará al método Setter en el objeto prototipo. Vale la pena señalar que al ejecutar el método Setter, si se trata de asignación variable, la operación de asignación actuará en el objeto en sí, y el objeto prototipo no se cambiará. Para este comportamiento, se puede entender como: el objeto hereda la función setter desde el prototipo y lo ejecuta.
De las reglas anteriores, podemos encontrar que si la operación de asignación a la propiedad es exitosa, el objeto en sí siempre se modificará al final, y su objeto prototipo prototipo no se cambiará.