update
This commit is contained in:
parent
962caebbb7
commit
87bf53d076
1825 changed files with 94929 additions and 0 deletions
|
@ -0,0 +1,23 @@
|
|||
Решение состоит в том, чтобы каждый раз возвращать текущий объект. Это делается добавлением `return this` в конце каждого метода:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
var ladder = {
|
||||
step: 0,
|
||||
up: function() {
|
||||
this.step++;
|
||||
return this;
|
||||
},
|
||||
down: function() {
|
||||
this.step--;
|
||||
return this;
|
||||
},
|
||||
showStep: function() {
|
||||
alert(this.step);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
ladder.up().up().down().up().down().showStep(); // 1
|
||||
```
|
||||
|
38
1-js/6-objects-more/1-object-methods/8-chain-calls/task.md
Normal file
38
1-js/6-objects-more/1-object-methods/8-chain-calls/task.md
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Цепочка вызовов
|
||||
|
||||
[importance 2]
|
||||
|
||||
Есть объект "лестница" ladder:
|
||||
|
||||
```js
|
||||
var ladder = {
|
||||
step: 0,
|
||||
up: function() { // вверх по лестнице
|
||||
this.step++;
|
||||
},
|
||||
down: function() { // вниз по лестнице
|
||||
this.step--;
|
||||
},
|
||||
showStep: function() { // вывести текущую ступеньку
|
||||
alert(this.step);
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
Сейчас, если нужно последовательно вызвать несколько методов объекта, это можно сделать так:
|
||||
|
||||
```js
|
||||
ladder.up();
|
||||
ladder.up();
|
||||
ladder.down();
|
||||
ladder.showStep(); // 1
|
||||
```
|
||||
|
||||
Модифицируйте код методов объекта, чтобы вызовы можно было делать цепочкой, вот так:
|
||||
|
||||
```js
|
||||
ladder.up().up().down().up().down().showStep(); // 1
|
||||
```
|
||||
|
||||
Такой подход называется "чейнинг" (chaining) и используется, например, во фреймворке jQuery.
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue