В этой статье мы собираемся объяснить объекты - определение, различные способы их создания и их связь с массивами.

Чтобы понять, что такое объекты, необходимо упомянуть два доступных типа данных.

Типы типов данных

1) Примитив:

Эти типы данных хранятся непосредственно в том месте, к которому имеет доступ переменная. Более того, они хранятся в стеке. Примерами являются строки, числа, логические значения, пустые значения, неопределенные значения и символы (ES6).
Поскольку основное внимание уделяется объектам, мы не будем объяснять каждый из примитивных типов данных.

2) Ссылка / объекты:

Объекты представляют собой наборы свойств, на которые ссылаются значения в них.

NB: данные хранятся не в переменной, а в куче, т.е. динамически выделяемой памяти. Имеется в виду указатель на место в памяти. Примерами являются массивы, объектные литералы, даты и функции.

Что мы подразумеваем под совокупностью свойств и значений?

Чтобы лучше понять это, давайте рассмотрим пример структуры объекта.

 let student = {
 firstname: “Roheem”,
 lastname: “Olayemi”,
 age: “26”,
 job: “coder”,
 githubProfile: “Tekcoder”,
 hobbies: [
 “reading”,
 “traveling”
 ],
 isMarried: true,
 aspirations: [
 “To work in Google”,
 “To work in Microsoft”,
 “To work in Amazon”
 ]
}

Надеюсь, я не напугал вас этим примером. Я сделал это, чтобы мы могли понять некоторые концепции.

Если внимательно присмотреться к созданному объекту «student», он содержит несколько типов данных и структур в виде свойств со значениями, такими как:

Свойства

  • Строка: имя
  • Число: возраст
  • Массив: увлечения
  • Логическое значение: isMarried

Их значения:

  • имя: «Рохим»
  • возраст: 26
  • хобби: [чтение, путешествия]
  • isMArried: правда

Как мы можем получить доступ к этим значениям свойств?

По сути, есть два способа получить доступ к значениям свойств в объектах. Они есть:

Точечная запись:

Доступ к значениям осуществляется с помощью точки «.». Например, используя объект «student», давайте обратимся к свойству «job».

console.log(“student.job”); 
//The result is “coder”

Обозначение скобок:

Доступ к значениям осуществляется с помощью квадратной скобки «[]». Давайте обратимся к значению свойства isMarried.

console.log(“student[“isMarried”]”); 
// The result is true

Как получить доступ к значениям свойств в массиве внутри объекта?

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

Используя наш объект «student», давайте получим доступ к значению второго свойства в массиве «aspiration».

console.log(“student.aspirations[1]”);
// The result is “To work in Microsoft”

Можно ли добавлять к объектам новые свойства со значениями?

Да, все, что нам нужно сделать, это просто:

student.favoriteFood = “Jollof Rice”

NB: Джоллоф Райс - один из лучших деликатесов в Нигерии, который дает вам импульс после каждого употребления и переопределяет вашу жизнь. Если вы не ели его раньше, вы наверняка упустите его.

В любом случае не волнуйтесь. Кстати, я просто шучу.

Итак, чтобы проверить наше недавно добавленное свойство «favouriteFood», давайте зарегистрируем объект student и посмотрим, что он нам возвращает.

console.log(“student”)
//The result should be the following:
Object {
age: "26"
aspirations:[ "To work in Google", "To work in Microsoft", "To work in Amazon" ]
favoriteFood: "Jollof Rice"
firstname: "Roheem"
githubProfile: "Tekcoder"
hobbies: Array [ "reading", "traveling" ]
isMarried: true
job: "coder"
lastname: "Olayemi"
}

Двигаясь дальше, давайте рассмотрим различные способы создания объектов.

Различные способы создания объектов в JavaScript

1) Использование литералов объекта:

Это просто определение свойств объекта и их значений, заключенных в фигурные скобки. Мы действительно это видели. Наш объект «студент» является типичным примером объектного литерала.

2) Использование функции конструктора:

Функция создана для создания новой структуры объекта. Для этого мы познакомились с двумя новыми концепциями в JavaScript, которые называются:

  • "Новое" ключевое слово
  • Ключевое слово this

Ключевое слово «new» позволяет нам создать новый объект из функции-конструктора, а ключевое слово «this» относится к контексту конкретного созданного объекта. Чтобы лучше понять это, давайте рассмотрим это в коде:

function Coder (firstname, lastname, height, age) {
 this.firstname = firstname
 this.lastname = lastname
 this.height = height
 this.age = age
}

Чтобы создать новый объект кодера, используя детали из функции конструктора, мы делаем следующее:

let coder = new Coder(“Roheem”, “Olayemi”, “Average”, 26);
console.log(coder);
//The result will be 
Coder {
 firstname: “Roheem”,
 lastname: “Olayemi”,
 height: “Average”,
 age: 26
}

NB: соглашение об именах для функции-конструктора пишется с заглавной буквы, то есть «Кодер».

3) Использование функции Object.create:

Для этого мы передаем объект, который будет прототипом нового объекта. Затем мы создаем свойства, присваивая их значениям, перечисляемым, доступным для записи и настраиваемым свойствам значение true. Давайте визуализируем это в коде.

let coder = Object.create(Object.prototype,
{
firstname: {
 value: “Roheem”,
 enumerable: true,
 writable: true,
 configurable: true
},
 
lastname: {
 value: “Olayemi”,
 enumerable: true,
 writable: true,
 configurable: true
},
height: {
 value: “Roheem”,
 enumerable: true,
 writable: true,
 configurable: true
},
age: {
 value: 26,
 enumerable: true,
 writable: true,
 configurable: true
}
})
console.log(coder);
// The result will be
Object {
 firstname: “Roheem”,
 lastname: “Olayemi”,
 height: “Average”,
 age: 26
}

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

4) Использование классов ES6

С появлением ECMAScript 2015, ES2015 или ES6 мы можем создавать объекты, используя структуру классов, аналогичную классам в языке со статической типизацией.

Давайте представим это на примере кода:

class Coder {
constructor(firstname, lastname, height, age) {
 this.firstname = firstname
 this.lastname = lastname
 this.height = height
 this.age = age
}

}

Итак, давайте создадим новый объект из этого класса «Coder».

let geek = new Coder(“Roheem”, “Olayemi”, “Average”, 26);
console.log(geek);
// The result is 
Object {
firstname: “Roheem”,
 lastname: “Olayemi”,
 height: “Average”,
 age: 26
}

NB: классы очень полезны в ООП (объектно-ориентированном программировании), то есть наследовании.

Важно отметить, что создание объектов с использованием объектных литералов и функций-конструкторов обычно используется.

Дополнительная информация

Считаются ли массивы объектами?

Да, они. Используя наш объект «студент», созданный выше.

let student = {
 firstname: “Roheem”,
 lastname: “Olayemi”,
 favoriteFood: “Jollof Rice”,
 age: “26”,
 job: “coder”,
 githubProfile: “Tekcoder”,
 hobbies: [
 “reading”,
 “traveling”
 ],
 isMarried: true,
 aspirations: [
 “To work in Google”,
 “To work in Microsoft”,
 “To work in Amazon”
 ]
}

В массивах на значения ссылаются не свойства, а позиция или индекс в них.

Итак, формат массива, представленный выше, на самом деле:

let student = {
 0: “Roheem”,
 1: “Olayemi”,
 2: “Jollof Rice”,
 3: “26”,
 4: “coder”,
 5: “Tekcoder”,
 6: [
 “reading”,
 “traveling”
 ],
 7: true,
 8: [
 “To work in Google”,
 “To work in Microsoft”,
 “To work in Amazon”
 ]
}

Заключение:

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

Надеюсь, вам понравилась статья. Буду признателен, если вы будете хлопать в ладоши, чтобы побудить вас написать больше полезных статей.

Если у вас есть какие-то наблюдения, идеи и предложения, пожалуйста, оставьте их в разделе комментариев.

Ссылка на Github: https://github.com/Tekcoder

LinkedIn: https://www.linkedin.com/in/abdurroheem-olayemi-baa9