Объекты в JavaScript. Часть 2

Вторник, 15 Ноябрь 2016 10:07

Напомню, в предыдущей статье мы с вами узнали, как можно создавать объекты и добавлять в них свойства. Также мы теперь знаем, как обратиться к тому или иному свойству объекта и получить его значение. Теперь давайте более детально поработаем со свойствами объектов.

В свойство объекта можно сохранить любое значение, хоть строку, хоть число. И свойств у объекта может быть сколь угодно много. Поскольку в объект можно добавлять свойства динамически, то в определенный момент работы программы нам может понадобиться проверить, а есть ли в объекте то или иное свойство. Сделать это можно двумя способами.

Первый способ используется чаще и заключается он в том, что мы проверим значение нужного свойства. Если это значение будет undefined, значит такого свойства нет. В противном случае свойство есть:

1.var names = {
2.name1: 'John',
3.name2: 'James'
4.};
5.console.log(names.name1);
6.console.log(names.name2);
7.console.log(names.name3);
 

Соответственно, можем использовать условие:

01.var names = {
02.name1: 'John',
03.name2: 'James'
04.};
05.if(names.name1 === undefined){
06.console.log('Свойство name1 не определено');
07.}
08.if(names.name2 === undefined){
09.console.log('Свойство name2 не определено');
10.}
11.if(names.name3 === undefined){
12.console.log('Свойство name3 не определено');
13.}
 

Результатом будет вывод в консоль единственной строки, сообщающей нам, что свойство name3 не определено.

Вторым вариантом проверки наличия свойства является оператор in, который используется следующим образом:

01.var names = {
02.name1: 'John',
03.name2: 'James'
04.};
05.if(!("name1" in names)){
06.console.log('Свойство name1 не определено');
07.}
08.if(!("name2" in names)){
09.console.log('Свойство name2 не определено');
10.}
11.if(!("name3" in names)){
12.console.log('Свойство name3 не определено');
13.}
 

Результат будет аналогичен предыдущему. Ну и в конце статьи давайте познакомимся с альтернативным синтаксисом доступа к свойствам объекта — через квадратные скобки (до сих пор мы обращались через точку).

1.var names = {
2.name1: 'John',
3.name2: 'James'
4.};
5.console.log(names.name1);
6.console.log(names['name1']);
 

Оба варианта доступа к свойству объекта — идентичны. Однако на практике иногда без квадратных скобок не обойтись. Например, если имя свойства включает в себя пробелы:

1.var names = {};
2.names.name 1 = 'John';
3.console.log(names);
 

Код выше вернет синтаксическую ошибку, поскольку интерпретатор JavaScript посчитает именем свойства строку до пробела.

А вот с использованием квадратных скобок все будет работать:

1.var names = {};
2.names['name 1'] = 'John';
3.console.log(names);
 

Конечно, использовать такие имена свойств не принято, но тем не менее все может быть и без скобок здесь не обойтись. 

Источник: http://webformyself.com/obekty-v-javascript-chast-2/