Page 136 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 136
функцию в существующий объект. Мы можем также добавить метод в объект непо
средственно.
const о =
name : ' W allace ' , / / свойство базового типа
bark : function ( ) { return ' W oof ! ' ; } , / / свойство функция (метод)
В спецификацию ЕSб введен новый сокращенный синтаксис для методов. Следу
ющее функционально эквивалентно предыдущему примеру.
const о = {
name : ' W allace ' , / / свойство базового типа
bark ( ) { return ' W oof ! ' ; } , / / свойство функции (метод)
Ключевое слово thi s
В теле функции доступна предназначенная только для чтения специальная пере
менная this. Это ключевое слово обычно ассоциируется с объектно-ориентиро
ванным программированием, и мы узнаем больше о его использовании в главе 9.
В JavaScript, однако, оно используется несколькими способами.
Обычно ключевое слово this имеет отношение к функциям, являющимся свой
ствами объектов. При вызове метода переменной this присваивается значение кон
кретного объекта, в котором произошел вызов.
const о = {
name : ' W allace ' ,
e
speak ( ) { return ' М еня зовут $ { t his . nam } ! ' ; } ,
о
Когда происходит вызов . speak ) , переменная this будет связана с объектом о.
(
(
о . speak ) ; / / "Меня зовут Wallace ! "
Важно понимать, что this связывается согласно тому, как функция вызвана, а не
где объявлена. Таким образом, this связана с о не потому, что speak - это свойство
о, а потому, что мы вызвали этот метод непосредственно из о (о . speak). Давайте
с
рассмотрим, что будет, если мы присвоим ту же функцию переменной.
k
const speak = o . spea ;
speak === o . speak; / / true; обе переменные обращаются к той же функции
speak ) ; / / "Меня зовут ! "
(
В связи с другим способом вызова функции движок JavaScript не знает, что функ
ция была первоначально объявлена в о; таким образом, переменной this было при
своено значение undefined.
1 3 6 Глава 6. Функции

