Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Обясните как работает this и () (https://javascript.ru/forum/events/78256-obyasnite-kak-rabotaet-i.html)

ifnvhdkgty 16.08.2019 10:12

Обясните как работает this и ()
 
Обясните, на аналогичных примерах как тут совмещены this и последовательное исполнение()
Как это работает я непойму никак. Как return подставлет this в последнюю строку.
Самый простой вариант аналога того что ниже можно


let ladder = {
step: 0,
up() {
this.step++;
return this;
},
down() {
this.step--;
return this;
},
showStep: function() { // показывает текущую ступеньку
dw( this.step );
return this;
}
};

ladder.up().up().down().showStep(); // 1


или ссылку на пояснение

Aetae 16.08.2019 22:08

Просто вызывается функция, из функции возвращается результат и из этого результата снова вызывается функция, никакой магии:
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 и так до бесконечности.


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