This commit is contained in:
Ilya Kantor 2017-01-07 01:25:31 +01:00
parent ad499144a1
commit 6c9c2219ba
19 changed files with 91 additions and 54 deletions

View file

@ -0,0 +1,8 @@
function Accumulator(startingValue) {
this.value = startingValue;
this.read = function() {
this.value += +prompt('Сколько добавлять будем?', 0);
};
}

View file

@ -0,0 +1,37 @@
describe("Accumulator(1)", function() {
var accumulator;
before(function() {
accumulator = new Accumulator(1);
});
beforeEach(function() {
sinon.stub(window, "prompt")
});
afterEach(function() {
prompt.restore();
});
it("начальное значение 1", function() {
assert.equal(accumulator.value, 1);
});
it("после ввода 0 значение 1", function() {
prompt.returns("0");
accumulator.read();
assert.equal(accumulator.value, 1);
});
it("после ввода 1 значение 2", function() {
prompt.returns("1");
accumulator.read();
assert.equal(accumulator.value, 2);
});
it("после ввода 2 значение 4", function() {
prompt.returns("2");
accumulator.read();
assert.equal(accumulator.value, 4);
});
});

View file

@ -0,0 +1,18 @@
```js run demo
function Accumulator(startingValue) {
this.value = startingValue;
this.read = function() {
this.value += +prompt('Сколько добавлять будем?', 0);
};
}
var accumulator = new Accumulator(1);
accumulator.read();
accumulator.read();
alert( accumulator.value );
```

View file

@ -0,0 +1,27 @@
importance: 5
---
# Создать Accumulator при помощи конструктора
Напишите *функцию-конструктор* `Accumulator(startingValue)`.
Объекты, которые она создает, должны хранить текущую сумму и прибавлять к ней то, что вводит посетитель.
Более формально, объект должен:
- Хранить текущее значение в своём свойстве `value`. Начальное значение свойства `value` ставится конструктором равным `startingValue`.
- Метод `read()` вызывает `prompt`, принимает число и прибавляет его к свойству `value`.
Таким образом, свойство `value` является текущей суммой всего, что ввел посетитель при вызовах метода `read()`, с учетом начального значения `startingValue`.
Ниже вы можете посмотреть работу кода:
```js
var accumulator = new Accumulator(1); // начальное значение 1
accumulator.read(); // прибавит ввод prompt к текущему значению
accumulator.read(); // прибавит ввод prompt к текущему значению
alert( accumulator.value ); // выведет текущее значение
```
[demo]