Методы объекта и ключевое слово this

21-01-24 12:46:57


Image for the Методы объекта и ключевое слово this

Определение методов объекта

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

// Определение объекта с методом
let автомобиль = {
марка: 'Тойота',
модель: 'Камри',
старт: function() {
console.log('Двигатель запущен');
}
};

// Вызов метода
автомобиль.старт(); // Вывод: Двигатель запущен

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

Стрелочные функции в качестве методов объекта

С появлением стрелочных функций в ECMAScript 6 их можно использовать в качестве кратких альтернатив для определения методов объекта:

let человек = {
имя: 'Джон',
приветствие: () => {
console.log(`Привет, ${this.имя}!`);
}
};

человек.приветствие(); // Вывод: Привет, undefined!

Однако важно отметить, что стрелочные функции не имеют собственного контекста this, поэтому в этом примере this.имя будет undefined. Традиционные функциональные выражения часто более подходят для методов объекта, которым нужен доступ к свойствам объекта.

Динамическое добавление метода

Методы также могут быть добавлены к объекту динамически после его создания. Это может быть полезно, когда вы хотите расширить функциональность существующего объекта:

let калькулятор = {
сложение: function(a, b) {
return a + b;
}
};

// Динамическое добавление метода умножения
калькулятор.умножение = function(a, b) {
return a * b;
};

console.log(калькулятор.умножение(3, 4)); // Вывод: 12

В этом примере метод умножение добавляется к объекту калькулятор после его первоначального определения.

Использование 'this' в методах объекта

Ключевое слово this внутри метода объекта ссылается на сам объект. Это позволяет вам получать доступ и изменять свойства объекта внутри метода:

let банковскийСчет = {
баланс: 1000,
депозит: function(сумма) {
this.баланс += сумма;
console.log(`Депозит успешен. Новый баланс: $${this.баланс}`);
}
};

банковскийСчет.депозит(500); // Вывод: Депозит успешен. Новый баланс: $1500

В этом примере метод депозит изменяет свойство баланс с использованием this.

Методы объекта для итерации

Методы объекта часто используются для итерации, особенно с введением методов, таких как Object.keys(), Object.values() и Object.entries():

let успеваемостьСтудента = {
Математика: 90,
Английский: 85,
Наука: 92,
};

// Использование Object.values() для вычисления средней оценки
let массивОценок = Object.values(успеваемостьСтудента);
let средняяОценка = массивОценок.reduce((акк, оценка) => акк + оценка, 0) / массивОценок.length;

console.log(`Средняя оценка: ${средняяОценка}`);

В этом примере Object.values() используется для извлечения значений из объекта успеваемостьСтудента для дальнейших вычислений.