첫 번째 단계는 createOperator 함수를 구현하고 클로저 함수를 반환하는 것입니다:
var Add = createOperator("+" , function(a,b){return a + b;}); var Minus = createOperator("-" , function(a,b){return a - b;}); var Mul = createOperator("*" , function(a,b){return a * b;}); var pide = createOperator("/" , function(a,b){return a / b;});
1 클로저 함수의 인스턴스에는 두 개의 eval과 toString 메소드
2. eval 메소드는 산술 의 값을 계산하는 역할을 담당합니다. 3. toString 메소드는 문자열 연산자var a = new Add(new Value(3), new Value(5));
//8
console.log(a.eval());
//"3 + 5"
console.log(a.toString());
var b = new Mul(new Value(6), new Value(2));
//12
console.log(b.eval());
//"6 * 2"
console.log(b.toString());
var c = new Add(a,b);
//20
console.log(c.eval());
//"3 + 5 + 6 * 2"
console.log(c.toString());
로 제한됩니다. 연산 중 값은 다음과 같은 형식으로 저장됩니다. 값
function Value(value){ this.value = value || 0; } Value.prototype.toString = function(){ return this.value.toString(); };
createOperator 함수 코드 구현:
//IIFE var createOperator = (function() { //name:"+","-","*","/" //oper:对应的加减乘除函数 return function(name, oper){ //闭包函数 var Foo = function(){ //获取2个操作数 var args = arguments; var nums = [].slice.call(arguments); nums = nums.map(function(e){return e.value;}); var val = new Value(oper.apply(null,nums)); //给实例绑定toString和eval方法 val.toString = function(){ return args[0].toString() + " " + name + " " + args[1].toString(); }; val.eval = function(){ return this.value; }; return val; }; return Foo; }; })();
위 내용은 JavaScript 산술 표현식 계산기의 코드 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!