实现一个calculate
# 实现一个calculate
class Calculate {
constructor(value) {
}
add(value) {
}
subtract(value) {
}
result() {
}
}
const cal = new Calculate(50);
console.log(cal.add(1).subtract(5).add(1000).subtract(5000).result());
结果是-3954
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- 加一 状态变为 Calculate { value: 51, state: 'pending' }
- 减5 Calculate { value: 46, state: 'pending' }
- 加1000 Calculate { value: 1046, state: 'pending' }
- 减5000 Calculate { value: -3954, state: 'pending' }
- -3954
答案:
class Calculate {
constructor(value) {
this.value = value;
this.state = "pending";
}
add(value) {
if (this.state === "pending") {
return new Calculate(this.value + value);
} else {
throw "error";
}
}
subtract(value) {
if (this.state === "pending") {
return new Calculate(this.value - value);
} else {
throw "error";
}
}
result() {
this.state = "success";
return this.value;
}
}
const cal = new Calculate(50);
console.log(cal.add(1).subtract(5).add(1000).subtract(5000).result());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28