Методы и this в JS
В этой статье вы подробнее познакомитесь с методами объектов и узнаете, зачем в JavaScript нужно ключевое слово this.
В предыдущей статье мы уже говорили про методы. Так называются функции, которые хранятся внутри объекта.
const person = {
name: 'Андрей',
greet: function() { console.log('Привет'); }
};
Например, здесь у объекта person
два ключа. Ключу name
соответствует строковое значение. Ключу greet
соответсвует функция, которая выводит в консоль слово «Привет» — это метод объекта person
.
Доступ к методам объекта
Синтаксис
Вызов метода осуществляется через точку — как и вызов свойств. Только в случае метода понадобится еще указать в конце круглые скобки ()
.
имяОбъекта.имяМетода()
const person = {
name: 'Андрей',
greet: function() { console.log('Привет'); }
};
// доступ к свойству
person.name; // Вывод: Андрей
// доступ к методу
person.greet(); // Вывод: Привет
Если вызвать метод без скобок — JavaScript сообщит описание функции.
person.greet; // Вывод: ƒ () { console.log('Привет'); }
Встроенные методы
В JavaScript много встроенных методов.
Например, встроенный метод объекта Number — parseInt. Он преобразовывает числа, записанные в string, в integer.
let number = '23.32';
let result = parseInt(number);
console.log(result); // Вывод: 23
Как добавить метод в объект
Часто встроенных методов недостаточно, поэтому приходится создавать свои, кастомные методы. Вот, как добавить метод в объект:
// создаем объект
let student = { };
// добавляем в объект свойство name
student.name = 'Андрей';
// добавляем в объект метод greet
student.greet = function() {
console.log('Андрей');
}
// вызываем метод
student.greet(); // Вывод: Привет
В этом примере мы сначала созадем пустой объект student
, затем добавляем ему свойство name
и метод greet
. Как вы видите, методы добавляются так же, как и свойства.
Ключевое слово this
Чтобы получить доступ к свойству или методу объекта из метода того же объекта, необходимо использовать ключевое слово this.
Синтаксис
this.ключ
Рассмотрим на примере.
const person = {
name: 'Андрей',
age: 30,
// мы получаем доступ к свойству name объекта person
// внутри метода greet объекта person
greet: function() { console.log('Привет. Меня зовут' + ' ' + this.name); }
};
person.greet();
Вывод:
Привет. Меня зовут Андрей
Сначала мы создали объект person
со свойством name
и методом greet
.
Чтобы получить доступ к свойству name
внутри метода greet
того же объекта person
мы использовали ключевое слово this
.
Доступ к переменным внутри метода осуществляется как обычно.
const person = {
name: 'Андрей',
age: 30,
greet: function() {
let surname = 'Карпов';
console.log('Привет. Меня зовут' + ' ' + this.name + ' ' + surname); }
};
person.greet();
Вывод:
Привет. Меня зовут Андрей Карпов