Объекты в JavaScript немного напоминают массивы, но для доступа к элементам объекта используют строку (ключ), а не число. Каждому ключу (или свойству) соответствует значение.
Создадим объект Кот через переменную cat и зададим три пары "ключ-значение".
var cat = {
"legs": 4,
"name": "Барсик",
"color": "Рыжий"
};
Для создания объекта используются фигурные скобки. Внутри помещаются свойства. Ключи всегда являются строковыми, а значения могут быть разных типов. Между ключом и значением ставится двоеточие, а разделяются пары запятыми.
JavaScript разрешает использовать ключи без кавычек, если ключи состоят из одного слова. Если вы будете использовать несколько слов с пробелами, то кавычки обязательны.
Получить доступ к значению свойства можно через квадратные скобки, указав ключ.
console.log(cat["color"]);
Допустим и другой синтаксис без квадратных скобок через точку - точечная нотация.
console.log(cat.name);
Узнать все ключи у объекта можно через команду Object.keys().
Object.keys(cat);
Можно пойти по другому пути - создать пустой объект и добавлять в него новые элементы.
var cat = {};
cat["legs"] = 4;
cat["name"] = "Мурзик";
cat["color"] = "Белый";
console.log(cat);
Также мы можем использовать точечную нотацию
var cat = {};
cat.legs = 4;
cat.name = "Мурзик";
cat.color = "Белый";
console.log(cat);
Если объект был создан ранее, то можно добавить новое свойство позже, присвоив ему нужное значение.
cat.age = 5;
Также в любой момент можно удалить свойство.
delete cat.age;
Если обратиться к несуществующему свойству объекта, то возвратится значение undefined.
Можно создавать массивы объектов.
var cats = [
{ name: "Barsik", age: 4},
{ name: "Vaska", age: 7}
];
cats[0]; // получим Object {name: "Barsik", age: 4}
Если весь объект нам не нужен, а только имя, то указываем ключ в ещё одних квадратных скобках.
cats[1]["name"];
Также можно использовать точечную нотацию.
cats[0].age;
Объекты можно использовать в функциях.
function meow(cat){
if(cat.color == "red"){
alert("meow");
}else{
alert("murr");
}
}
console.log(meow(cat));
Объекты могут включать в себя функции, в таких случаях обычно говорят, что у объекта есть метод. Функция в объекте должна быть анонимной.
var cat = {
name: "Barsik",
weight: 7,
sleep: function(){
alert("I'm sleeping!");
}
};
Вызываем метод объекта через точечную нотацию.
cat.sleep();
У объекта также может быть конструктор. Он похож на функцию, но имя должно начинаться с заглавной буквы.
function Cat(name, weight){
this.name = name;
this.weight = weight;
this.sleep = function(){
if(this.weight > 5){
alert(this.name + " храпит как слон");
}else{
alert(this.name + " тихонько сопит");
}
};
}
Вызываем конструктор и его метод.
var murzik = new Cat("Мурзик", 3);
var barsik = new Cat("Барсик", 6);
murzik.sleep();
barsik.sleep();