Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.09.2019, 23:08
Новичок на форуме
Отправить личное сообщение для alexsm993 Посмотреть профиль Найти все сообщения от alexsm993
 
Регистрация: 25.09.2019
Сообщений: 3

Тонкости func.call(obj)
Всем привет! Есть код:

function sayBye() {
console.log('outside')
};

let user = {

sayHi: function() {
sayBye.call(user)
},

sayBye: function() {
console.log('Bye')
}
};

user.sayHi(); // outside ??? почему не 'Bye'

Как я рассуждаю.
Последней строчкой кода запускается метод sayHi() объекта user.
Метод говорит запусти функцию sayBye в контексте user.
В контексте user функция есть, но выполняется внешняя. Почему?
Ответить с цитированием
  #2 (permalink)  
Старый 25.09.2019, 23:42
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 498

Сообщение от alexsm993
Метод говорит запусти функцию sayBye в контексте user.
Контекст user - это всего лишь означает, что переменная this внутри этой функции будет указывать на объект user. Это не означает, что сама функция будет взята из этого объекта.

Укажите явно, где искать функцию:
sayHi: function() {
this.sayBye();
//или user.sayBye();
},
Ответить с цитированием
  #3 (permalink)  
Старый 27.09.2019, 20:41
Новичок на форуме
Отправить личное сообщение для alexsm993 Посмотреть профиль Найти все сообщения от alexsm993
 
Регистрация: 25.09.2019
Сообщений: 3

Да, я понял, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тонкости создания прототипов pomidor_makaronus Общие вопросы Javascript 30 13.06.2016 14:11
Как узнать тонкости языка? TheChosenOne777 Общие вопросы Javascript 8 29.08.2012 17:48