JavaScript - Методы объектов

Здравствуйте, будущие маги JavaScript! Сегодня мы погружаемся в магический мир методов объектов JavaScript. Возьмите свои кодовые посохи (клавиатуры) и отправляйтесь в это увлекательное путешествие вместе с нами!

JavaScript - Object Methods

Что такое методы объектов JavaScript?

Прежде чем мы начнем колдовать с методами объектов, давайте поймем, что они из себя представляют. На простом языке, методы объектов - это функции, принадлежащие объекту. Это как особые способности, которыми обладают наши объекты.

Давайте рассмотрим базовый пример:

let wizard = {
name: 'Мерлин',
castSpell: function() {
console.log('Абракадabra!');
}
};

wizard.castSpell(); // Вывод: Абракадabra!

Здесь castSpell - это метод нашего объекта wizard. Когда мы вызываем wizard.castSpell(), наш маг performs его магию!

Краткая запись методов объектов

Теперь давайте научимся классному трюку. ES6 ввел более короткий способ определения методов в объектах. Это как магическийShortcut для написания методов объектов!

let wizard = {
name: 'Мерлин',
castSpell() {
console.log('Абракадabra!');
}
};

wizard.castSpell(); // Вывод: Абракадabra!

Смотрите, как мы убрали часть : function? Это короче и чище, как хорошо организованный魔法льный справочник!

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

Объекты в JavaScript гибки. Мы можем добавлять новые методы или обновлять существующие даже после создания объекта. Это как учить нашего мага новым заклинаниям!

let wizard = {
name: 'Мерлин'
};

// Добавление нового метода
wizard.castFireball = function() {
console.log('Шшш! Запущен огненный шар!');
};

wizard.castFireball(); // Вывод: Шшш! Запущен огненный шар!

// Обновление существующего метода
wizard.castFireball = function() {
console.log('Активирован超级 огненный шар!');
};

wizard.castFireball(); // Вывод: Активирован超级 огненный шар!

В этом примере мы сначала добавили метод castFireball нашему магу, а затем обновили его, чтобы он колдовал еще более мощный огненный шар!

Использование встроенных методов

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

1. Object.keys()

Этот метод возвращает массив собственных имён свойств данного объекта.

let spellBook = {
fireball: 'Наносит огненный урон',
iceBeam: 'Замораживает цель',
thunderbolt: 'Электрифицирует врага'
};

console.log(Object.keys(spellBook));
// Вывод: ['fireball', 'iceBeam', 'thunderbolt']

2. Object.values()

Похож на Object.keys(), но возвращает массив собственных перечислимых значений свойства объекта.

console.log(Object.values(spellBook));
// Вывод: ['Наносит огненный урон', 'Замораживает цель', 'Электрифицирует врага']

3. Object.entries()

Этот метод возвращает массив собственных перечислимых строковых ключевых свойств [ключ, значение] пар объекта.

console.log(Object.entries(spellBook));
// Вывод: [
//   ['fireball', 'Наносит огненный урон'],
//   ['iceBeam', 'Замораживает цель'],
//   ['thunderbolt', 'Электрифицирует врага']
// ]

Вот таблица, резюмирующая эти встроенные методы:

Метод Описание Пример
Object.keys() Возвращает массив имён свойств объекта Object.keys(spellBook)
Object.values() Возвращает массив значений свойств объекта Object.values(spellBook)
Object.entries() Возвращает массив пар [ключ, значение] свойств объекта Object.entries(spellBook)

Ключевое слово 'this' в методах объектов

Теперь давайте поговорим о мощной, но иногда сбивающей с толку концепции: ключевом слове this. В методах объектов this ссылается на объект, к которому принадлежит метод. Это как если бы объект говорил "это я!"

let wizard = {
name: 'Мерлин',
introduceYourself() {
console.log(`Здравствуйте, я ${this.name}!`);
}
};

wizard.introduceYourself(); // Вывод: Здравствуйте, я Мерлин!

В этом примере this.name ссылается на property name объекта wizard.

Практический пример: игра в колдовство

Давайте объединим все, что мы узнали, в забавную小游戏 в колдовство!

let wizard = {
name: 'Мерлин',
mana: 100,
spells: {
fireball: 30,
iceBeam: 20,
heal: 50
},
castSpell(spell) {
if (this.mana >= this.spells[spell]) {
this.mana -= this.spells[spell];
console.log(`${this.name} колдует ${spell}! Оставшееся мана: ${this.mana}`);
} else {
console.log(`${this.name} не имеет достаточно маны для колдовства ${spell}!`);
}
}
};

wizard.castSpell('fireball'); // Вывод: Мерлин колдует fireball! Оставшееся мана: 70
wizard.castSpell('heal'); // Вывод: Мерлин колдует heal! Оставшееся мана: 20
wizard.castSpell('fireball'); // Вывод: Мерлин не имеет достаточно маны для колдовства fireball!

В этой игре наш маг может колдовать заклинания, если у него есть достаточно маны. Метод castSpell проверяет стоимость маны для заклинания, вычитает её у мага, если возможно, и даёт обратную связь о действии.

И вот выучили вы, ученики! Вы узнали основы методов объектов JavaScript. Помните, что практика делает perfect, так что продолжайте экспериментировать с этими концепциями. Soon, вы будете программировать как настоящий маг JavaScript! Пусть ваш код будет свободен от ошибок, и ваши методы всегда возвращают ожидаемый результат. Счастливого кодирования!

Credits: Image by storyset