Объекты. Наследование. Перебор. - Веб студия IZIART

Разработка сайтов
индивидуальный дизайн

Главная » JS » Объекты. Наследование. Перебор.

Объекты. Наследование. Перебор.

js

Синтаксис

Объекты это сложный тип данных в JavaScript, который может хранить коллекции разных значений и иметь большую вложенность других типов данных.

Объект представляет собой данные в виде «ключ: значение». Ключом является название, а значением может быть свойство (переменная) или метод (функция).

let person = {
	name: 'alex',     // свойство
	myName() { 	  // метод
		console.log('hello');
	}
}

Обращение к ключам осуществляется через точку.

person.name  // alex
person.myName()  // hello

Перебор объекта. Цикл for … in

Перебрать объект как массив не получится. Но если необходимо пройтись по всем ключам объекта в цикле, можно использовать цикл for … in.
Следующий пример выведет в консоль имена всех свойств объекта person.

let person = {
	name: 'alex', 
	age: 18,
	myName() { 	  
		console.log('hello');
	}
}

for (key in person) {
  console.log(key);
}

// name
// age
// myName

Функция конструктор

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

function Person(name, age) {
  this.name = name;
  this.age = age;
}

let alex = new Person('alex', 24);
let ivan = new Person('ivan', 20);

console.log(alex);  // Object { name: "alex", age: 24 }
console.log(ivan);  // Object { name: "ivan", age: 20 }

Наследование объектов

Свойства одного объекта можно наследовать через прототипы от другого. Делается это через Object.create(), а в качестве параметра передается наследуемый объект.

let person = {
	name: 'alex',
	myName() { 	  
		console.log(this.name);
	}
}

let profile = Object.create(person);
console.log(profile.name);  // alex

Мы создали новый объект profile и при создании наследовали свойства объекта person. Теперь можно обратиться к свойствам объекта person, но уже через profile.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *