up
This commit is contained in:
parent
d7d25f4d8b
commit
20784e7f26
48 changed files with 302 additions and 397 deletions
|
@ -1,52 +1,3 @@
|
|||
|
||||
|
||||
```js run
|
||||
function Calculator() {
|
||||
|
||||
var methods = {
|
||||
"-": function(a, b) {
|
||||
return a - b;
|
||||
},
|
||||
"+": function(a, b) {
|
||||
return a + b;
|
||||
}
|
||||
};
|
||||
|
||||
this.calculate = function(str) {
|
||||
|
||||
var split = str.split(' '),
|
||||
a = +split[0],
|
||||
op = split[1],
|
||||
b = +split[2]
|
||||
|
||||
if (!methods[op] || isNaN(a) || isNaN(b)) {
|
||||
return NaN;
|
||||
}
|
||||
|
||||
return methods[op](+a, +b);
|
||||
}
|
||||
|
||||
this.addMethod = function(name, func) {
|
||||
methods[name] = func;
|
||||
};
|
||||
}
|
||||
|
||||
var calc = new Calculator;
|
||||
|
||||
calc.addMethod("*", function(a, b) {
|
||||
return a * b;
|
||||
});
|
||||
calc.addMethod("/", function(a, b) {
|
||||
return a / b;
|
||||
});
|
||||
calc.addMethod("**", function(a, b) {
|
||||
return Math.pow(a, b);
|
||||
});
|
||||
|
||||
var result = calc.calculate("2 ** 3");
|
||||
alert( result ); // 8
|
||||
```
|
||||
|
||||
- Обратите внимание на хранение методов. Они просто добавляются к внутреннему объекту.
|
||||
- Все проверки и преобразование к числу производятся в методе `calculate`. В дальнейшем он может быть расширен для поддержки более сложных выражений.
|
||||
|
||||
- Please note how methods are stored. They are simply added to the internal object.
|
||||
- All tests and numeric conversions are done in the `calculate` method. In future it may be extended to support more complex expressions.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue