Конспект «Объекты». Раздел 2

Методы объекта

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

let cat = {
  name: 'Кекс',
  color: 'рыжий',
  age: 5,

  getGreeting: function() {
    return 'Мяу, привет!';
  }
};

console.log(cat.getGreeting()); // Выведет: Мяу, привет!

Скобочная нотация

Прочитать свойство из объекта можно с помощью квадратных скобок: catsFavoriteFood[name]. Способ со скобками называется скобочной нотацией, способ с точкой — точечной нотацией.

Скобочная нотация намного гибче точечной. Например, вы можете прочитать из объекта свойство, название которого записано в переменную:

let name = 'Кекс';
let catsFavoriteFood = { 'Кекс': 'рыба' };

console.log(catsFavoriteFood.name); // Выведет: undefined

console.log(catsFavoriteFood[name]); // Выведет: рыба

Первое сообщение содержит undefined, потому что у объекта нет свойства name. Второе сообщение содержит искомое значение, потому что программа понимает, что в квадратных скобках переменная. Значение переменной подставится в скобки, а затем будет найдено нужное свойство объекта.

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

let cat = { 'favorite food': 'Сметана' };

// Вызовет ошибку
console.log(cat.favorite food);

// Отработает нормально
console.log(cat['favorite food']);

Объект как словарь

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

let catsFavoriteFood = {
  Кекс: 'рыба',
  Рудольф: 'котлета',
  Снежок: 'сметана'
};

let printFavoriteFood = function (name) {
  // Используем скобочную нотацию
  return 'Моя любимая еда — ' + catsFavoriteFood[name];
};

console.log(printFavoriteFood('Снежок')); // Выведет: Моя любимая еда — сметана

this

Изнутри методов можно обращаться к свойствам и другим методам объекта с помощью ключевого слова this. Оно указывает на текущий объект и называется контекстом вызова.

Важная деталь: пока функция не вызвана, this не содержит никакого значения, контекст появляется только в момент вызова функции.

let cat = {
  name: 'Кекс',
  color: 'рыжий',
  age: 5,

  getGreeting: function() {
    return 'Мяу, привет! Меня зовут ' + this.name;
  }
};

console.log(cat.getGreeting()); // Выведет: Мяу, привет! Меня зовут Кекс
Бабушка Кекс

Притормози, дружище

Проходить вызовы части «Объекты» тренажёра «Базовые структуры данных» можно после регистрации и оформления подписки.