Хорошо, спасибо всем за ваши предложения и комментарии. Я думаю, что нашел то, что сделал не так.
Я сохранял возвращение функции связывания в переменной txt, которая теряет this
. Что мне нужно было сделать, это заменить user.txt
на функцию возврата или сохранить ее вдругое user
значение объекта, например user.txtBound
, правильная версия кода будет
let user = {
name:'rifat',
txt (time, msg){
console.log('['+time+ '] '+ this.name+ ' : '+ msg);
}
}
function bind(func, ...fArgs){
return function(...args){
return func.call(this, ...fArgs, ...args); // here 'this' will be determined
//when the returned function executes
};
}
user.txt = bind(user.txt, new Date().getHours()+':' +new Date().getMinutes() );
// storing the returned function as a object property
user.txt('hey!'); //this works fine
, эта просто отлично работает.
Извините за беспокойство, я экспериментировал :)