Показать сообщение отдельно
  #2 (permalink)  
Старый 16.08.2019, 22:08
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

Просто вызывается функция, из функции возвращается результат и из этого результата снова вызывается функция, никакой магии:
function a() {
  return 1
}

a() //1

function b() {
  return {
    some: 1
  }
}

b().some //1

function c() {
  return {
    b: b
  }
}

c().b().some //1


Если же проблема с this то тут тоже всё просто.
Когда вызываешь obj.some(), this внутри some становится obj, соответственно
let ladder = {
  some() {
    return this;
  }
}
при вызове ladder.some() равносилен
let ladder = {
  some() {
    return ladder;
  }
}
, т.е. каждый резульат вызова ladder.some() равен ladder, а значит у него снова можно вызвать some и так до бесконечности.
__________________
29375, 35
Ответить с цитированием