Объекты

Объекты в 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();
Реклама