Я следил за онлайн-уроком для начинающих, который использовал методы apply / bind, чтобы установить контекст this для функции.
Я видел, что вы можете связать метод bind напрямую с функциональным блоком, который был для меня новым. Поэтому я подумал, почему я не могу связать другие методы, кроме bind / call / apply, чтобы повлиять на возвращаемое значение.
let obj = {
name: 'john',
};
let sayHello = function() {
return 'hello there ' + this.name;
}.apply(obj).toUpperCase();
let sayBonjour = function() {
return 'Bonjour!';
}.toUpperCase();
console.log(sayHello);
console.log(sayBonjour());
В приведенном выше примере, почему я могу использовать метод .toUpperCase () для функции sayHello, которая использует метод apply, а не для функции sayBonjour, которая этого не делает. При попытке сделать это я получаю ошибку:
'Uncaught TypeError: (промежуточное значение) .toUpperCase не является функцией'.
Я понимаю, что это не тот способ, которым строковый метод (или другие методы) предназначен / предназначен для использования в учебных целях, я надеялся, что кто-то может объяснить, что мешает мне использовать метод таким способом.
Большое спасибо за ваше время и помощь