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