В JavaScript вы можете прочитать и написать свойство объекта через оператор DOT ». или оператор кронштейна "[]":
Кода -копия выглядит следующим образом:
var O = {x: 1, y: 2};
Консоль.log (Ox); // 1
Console.log (o ["y"]); // 2
Ой = 7;
Console.log (o ["y"]); // 7
Стоит отметить, что если используется оператор кронштейна, тип значения в операторе должен быть строкой или выражение, которое можно преобразовать в строку:
Кода -копия выглядит следующим образом:
console.log (o [y]); // referenceerror: y не определено
var v = "y";
Console.log (o [v]); // 7
В отличие от Java Language, свойства объектов в JavaScript могут быть добавлены или удалены динамически. При назначении свойства, если свойство не существует, JavaScript динамически добавит это свойство к объекту:
Кода -копия выглядит следующим образом:
унция = 99;
console.log (o); // Object {x = 1, y = 7, z = 99}
Чтение собственности в цепочке наследования прототипа
Все объекты в JavaScript имеют прототип прототип объекта и наследуя свойство с объекта прототипа; Следовательно, свойства объекта в JS делятся на две категории:
1. Собственность, принадлежащая саму объекту («собственное свойство»).
2. Свойство унаследовано от объекта прототипа.
При чтении свойства объекта последовали правила следующие:
1. Поиск собственности, которую необходимо прочитать из собственной собственности объекта («собственная собственность»); Если его можно найти, он будет напрямую прочитать свойство и вернуть его значение.
2. Если свойство не может быть найдено из собственной сбора свойств объекта («собственное свойство»), продолжите искать из цепочки прототипа прототипа объекта до тех пор, пока свойство не будет найдено и его значение не будет возвращено.
3. Если свойство не может быть найдено в собственной собственности объекта («собственное свойство»), и свойство не может быть найдено во всех объектах прототипа объекта, то не определено возвращено.
Напишите свойство в цепочке наследования прототипа
При написании на собственность объекта JavaScript, последовательные правила следующие:
1. Если сам объект имеет свойство, а свойство можно записать, напишите новое значение в свойство. Если свойство только для чтения, сообщается об ошибке.
2. Если сам объект не имеет свойства и не существует во всех его объектах прототипа, добавьте это свойство в объект.
3. Если сам объект не имеет свойства, но свойство существует в его объекте прототипа и подлежит записи, то JS создаст это свойство в объекте; То есть объект переопределяет свойство в своем объекте прототипа. Это значение свойства в объекте прототипа остается неизменным.
4. Если сам объект не имеет свойства, но свойство существует в его объекте-прототипе и только для чтения, сообщается об ошибке.
5. Если сам объект не имеет свойства, но метод установки свойства существует в его объекте прототипа, то JS вызовет метод сеттера в объекте прототипа. Стоит отметить, что при запуске метода сеттера, если задействовано задание переменной, операция назначения будет действовать на самом объекте, а объект прототипа не будет изменен. Для этого поведения его можно понять как: объект наследует функцию сеттера от прототипа и выполняет его.
Из приведенных выше правил мы можем обнаружить, что если операция назначения на свойство будет успешной, то сам объект всегда будет изменен в конце, а его прототип -объект не будет изменен.