Объекты 28/29 Сергей Козин…
Конспект «Объекты». Раздел 2
Методы объекта
В объектах могут храниться любые типы данных, в том числе и функции. Такие свойства-функции называются методами
объектов. Вызов метода записывается так: объект.метод ().
let cat = {
name: 'Кекс',
color: 'рыжий',
age: 5,
getGreeting: function() {
return 'Мяу, привет!';
}
};
[Link]([Link]()); // Выведет: Мяу, привет!
Скобочная нотация
Прочитать свойство из объекта можно с помощью квадратных скобок: catsFavoriteFood[name] . Способ со скобками
называется скобочной нотацией, способ с точкой — точечной нотацией.
Скобочная нотация намного гибче точечной. Например, вы можете прочитать из объекта свойство, название которого
записано в переменную:
let name = 'Кекс';
let catsFavoriteFood = { 'Кекс': 'рыба' };
[Link]([Link]); // Выведет: undefined
[Link](catsFavoriteFood[name]); // Выведет: рыба
Первое сообщение содержит undefined , потому что у объекта нет свойства name . Второе сообщение содержит
искомое значение, потому что программа понимает, что в квадратных скобках переменная. Значение переменной
подставится в скобки, а затем будет найдено нужное свойство объекта.
В качестве ключей в объекте можно использовать любые строки, даже строки с пробелами. С точечной нотацией такие
свойства прочитать не получится, а со скобочной — без проблем.
let cat = { 'favorite food': 'Сметана' };
// Вызовет ошибку
[Link]([Link] food);
// Отработает нормально
[Link](cat['favorite food']);
Объект как словарь
Словари, или мапы, очень удобны в использовании. В нашем примере они хранят соотношение имени кота и лакомства,
которое по вкусу именно ему.
let catsFavoriteFood = {
Кекс: 'рыба',
Рудольф: 'котлета',
Снежок: 'сметана'
};
let printFavoriteFood = function (name) {
// Используем скобочную нотацию
return 'Моя любимая еда — ' + catsFavoriteFood [name] ;
};
[Link](printFavoriteFood('Снежок')); // Выведет: Моя любимая еда — сметана
this
Изнутри методов можно обращаться к свойствам и другим методам объекта с помощью ключевого слова this . Оно
указывает на текущий объект и называется контекстом вызова.
Важная деталь: пока функция не вызвана, this не содержит никакого значения, контекст появляется только в момент
вызова функции.
let cat = {
name: 'Кекс',
color: 'рыжий',
age: 5,
getGreeting: function() {
return 'Мяу, привет! Меня зовут ' + [Link] ;
}
};
[Link]( [Link]() ); // Выведет: Мяу, привет! Меня зовут Кекс
Продолжить