вопрос | ответ |
При копировании переменной с объектом — копируется эта ссылка, а объект по-прежнему остается в единственном экземпляре. | Получается, что несколько переменных ссылаются на один и тот же объект: var user = { name: "Вася" }; // в переменной - ссылка var admin = us |
Объекты присваиваются и передаются «по ссылке». | В переменной хранится не сам объект, а ссылка на его место в памяти. Чтобы лучше понять это — сравним с обычными переменными. |
А вот так выглядит функция проверки на «пустоту»: | function isEmpty(obj) { for (var key in obj) { return false; // если цикл хоть раз сработал, то объект не пустой => false } // дошли до этой строки - |
Количество свойств в объекте | Одного метода, который вернул бы количество свойств нет. Кросс-браузерный способ — это сделать цикл по свойствам и посчитать: function getKeysCount(o |
Перебор свойств и значений | Для перебора всех свойств из объекта используется цикл по свойствам for..in. Это специальная синтаксическая конструкция, которая работает не так, как |
Названия свойств можно перечислять в кавычках или без, если они удовлетворяют ограничениям для имён переменных. | Например: var menuSetup = { width: 300, 'height': 200, "мама мыла раму": true }; |
Следующие два фрагмента кода создают одинаковый объект: | var menuSetup = { width: 300, height: 200, title: "Menu" }; // то же самое, что: var menuSetup = {}; menuSetup.width = 300; menuSetup.he |
Объявление со свойствами | { ключ1: значение1, ключ2: значение2, ... } |
obj[key] использует значение переменной key в качестве имени свойства: | var person = { age: 25 }; var key = 'age'; alert(person[key]); // возвратит person['age'] |
Существует альтернативный синтаксис работы со свойствами, использующий квадратные скобки объект['свойство']: | var person = {}; person['name'] = 'Вася'; // то же что и person.name alert(person['name']); delete person['name']; |
Разница между проверками in и === undefined | Сравнение с undefined не работает, если значение свойства равно undefined: |
Впрочем, чаще используется другой способ — сравнение значения с undefined. Дело в том, что в JavaScript можно обратиться к любому свойству объекта, д | Но если свойство не существует, то вернется специальное значение undefined: alert(person.lalala); // undefined, нет свойства с ключом lalala |
Проверка существования свойства с определенным ключом. Например, есть объект person, и нужно проверить, существует ли в нем свойство age. | Для проверки существования есть оператор in: if ("age" in person) { alert("Свойство age существует!"); } |
Для обращения к свойствам используется запись «через точку», вида объект.свойство: | var person = {}; person.name = 'Вася'; // запишем свойство с именем 'name' и значением 'Вася' person.age = 25; // запишем свойство с |
Создание объектов | Объект может содержать в себе любые значения, которые называются свойствами объекта. Доступ к свойствам осуществляется по имени свойства (иногда говор |
создание объектов | 1. o = new Object(); 2. o = {}; // пустые фигурные скобки |