1

let user = {
  name: 'hello'
};
user.d = function(){

function sayHi() { return this.name; } let result = sayHi(); return result }

console.log( user.d() )

  1. Объявили объект user
  2. У него есть свойство анонимная функция в которую вложено функция sayHi
  3. У функции sayHi есть this он может ссылаться на анонимную функцию ( т.к функцию можно представить как объект ) и она ( анонимная функция ) оборачивает sayHi ?
  4. this может перепрыгнуть через анонимную функцию чтобы получить результат ?

1 Answers1

1

По порядку.

this может ссылаться на функцию:

function a(b,c,d) {
  return 0;
}

a.e = function() { console.log(this.toString()); };

a.e();

this внутри функции зависит от того, как функцию вызывают, а не от того, где она находится.

this не может "перепрыгнуть" через анонимную функцию. this может "перепрыгнуть" через стрелочную функцию.

  • this может ссылаться на функцию если записано как свойство ? – user349791 Sep 10 '19 at 14:49
  • @user349791 да, если я правильно Вас понял :) –  Sep 10 '19 at 14:54
  • понимаю Вас я сам себя иногда не понимаю :) – user349791 Sep 10 '19 at 14:57
  • получается вот такая конструкция получит undefined function a(b,c,d) { console.log(this.toString()); } a(); – user349791 Sep 10 '19 at 15:01
  • @user349791 Нет. this в таком случае - window. –  Sep 10 '19 at 15:07
  • я имел ввиду если у нас стоит ''use strikt'' ? – user349791 Sep 10 '19 at 15:10
  • если мы вызываем функцию через call или apply мы вызываем ее как метод объекта ? – user349791 Sep 10 '19 at 15:35
  • @user349791 да. –  Sep 10 '19 at 15:36
  • да это ответ на ''use strikt' или call или apply ? – user349791 Sep 10 '19 at 15:37
  • @user349791 call или apply –  Sep 10 '19 at 15:39
  • жаль я думал 2 вопроса правильные и еще немного ... – user349791 Sep 10 '19 at 15:40
  • если мы вызываем функцию через call или apply то первый аргумент this будет ссылаться на ближайший объект ? – user349791 Sep 10 '19 at 15:41
  • посмотрите последний комментарий верный ? – user349791 Sep 10 '19 at 19:30
  • @user349791 Я не понимаю, что значит "ближайший объект". this в функции полностью определен тем, как функция вызывается (кроме случая стрелочной функции). Мы, по-моему, идем по кругу. –  Sep 10 '19 at 19:36
  • ясно, если что извините :(( – user349791 Sep 10 '19 at 19:39