Ранее мы говорили, что в объекте хранится информация в формате ключ-значение, однако помимо информации в объекте могут храниться и наборы действий, операций. Данные операции называются методы объекта.
Если свойства объекта — это переменные закрепленные за объектом, то методы — это функции закрепленные за объектом.
Как задать метод объекту
Самый простой вариант — при объявлении объекта. Давайте зададим объекту метод, который при вызове будет выводить слово «hi».
1 2 3 4 5 6 7 8 9 10 11 |
function f1() { var m={ age: 46, //Объявляем метод hello: function (){ alert('Hi'); } }; //Запускаем метод m.hello(); } |
See the Pen Методы объекта в JS by Alex (@Asmodey) on CodePen.
Как видно, метод — это функция описанная внутри объекта. Вызов функции осуществляется по ключу. Обратите внимание, что при вызове указываются круглые скобки, даже если они пустые (т.е. мы не передаем параметров внутрь функции).
Также, метод можно объявить и присваиванием. Допустим, у нас уже есть функция, давайте присвоим ее в качестве метода, какому-либо объекту.
1 2 3 4 5 6 7 8 |
function f1() { var m={age: 46}; mmm=function() { alert('Hello'); } //Присваиваем функцию как метод say m.say=mmm; //Вызываем метод m.say(); } |
See the Pen Методы в объектах by Alex (@Asmodey) on CodePen.
Т.е. мы просто присвоили ключу объекта, функцию. Ничего сложного, не так ли?
Этот страшный this
Те способы создания методов объекта довольно простые, но вся их мощь раскрывается, когда метод взаимодействует с объектом. Для того, чтобы метод получил доступ к ключам и значениям объекта используется ключевое слово this. В контексте вызова метода объекта, this заменяет имя объекта.
Пример. У нас есть объект, который содержит информацию о человеке. Давайте создадим метод, который будет выводить содержащуюся в объекте информацию в удобном для чтения виде.
1 2 3 4 5 6 7 8 9 |
function f1() { var m={ name: "Иван", age: 46, see: function() { alert( 'Пользователь: '+this.name+'. Возраст: '+this.age); } }; //Запускаем метод m.see(); } |
See the Pen Использование this в методе объекта by Alex (@Asmodey) on CodePen.
Как видно, this используется как замена имени объекта и получает получать доступ к свойствам объекта.