В этом кратком очерке мы разберем ключевые различия между функциями и методами в JavaScript.
Функции
Функция в JavaScript существует сама по себе и может быть определена различными способами. Вот два примера:
Функция-стрелка (Arrow Function)
const bark = () => {
console.log('woof!')
}
bark()
Обычная функция
function bark() {
console.log('woof!')
}
bark()
Методы
Метод — это функция, назначенная свойству объекта. Методы позволяют объектам выполнять действия, взаимодействуя со своими свойствами.
Определение метода
const dog = {
bark: () => {
console.log('woof!')
}
}
dog.bark()
Доступ к свойствам объекта
Метод имеет доступ к свойствам объекта через ключевое слово this
, но только если он объявлен как обычная функция, а не стрелочная. Стрелочные функции не имеют собственного контекста this
и унаследуют его из родительского контекста.
Пример метода с доступом к свойствам объекта
const dog = {
name: 'Roger',
bark: function() {
console.log(`I am ${this.name}. woof!`)
}
}
dog.bark() // Вывод: I am Roger. woof!
В этом примере метод bark
использует this.name
, чтобы получить доступ к свойству name
объекта dog
. Если бы bark
была объявлена как стрелочная функция, this
не ссылалось бы на объект dog
.
Заключение
Основное отличие между функциями и методами в JavaScript заключается в их привязке к объектам и способности методов взаимодействовать со свойствами объекта через ключевое слово this
. Понимание этих различий поможет вам более эффективно писать и структурировать код на JavaScript.