Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Тонкости func.call(obj) (https://javascript.ru/forum/misc/78526-tonkosti-func-call-obj.html)

alexsm993 25.09.2019 23:08

Тонкости 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 функция есть, но выполняется внешняя. Почему?

Белый шум 25.09.2019 23:42

Цитата:

Сообщение от alexsm993
Метод говорит запусти функцию sayBye в контексте user.

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

Укажите явно, где искать функцию:
sayHi: function() {
this.sayBye();
//или user.sayBye();
},

alexsm993 27.09.2019 20:41

Да, я понял, спасибо!


Часовой пояс GMT +3, время: 18:01.