JavaScript的表达式解析器-6. 函数的实现
2013-01-14 15:27
323 查看
类似于操作符,函数的实现也很简单,以Average函数为例:
因为没有实现自动注册功能,所以还需要在Function.js中做一些工作:
添加函数的工作变得简单了。
var igame; importNamespace( 'igame.Expression.Operator.Function' ); igame.Expression.Operator.Function.Average = function () { igame.Expression.Operator.FunctionBase.call( this ); this.setMinArgumentLength( 1 ); this.setMaxArgumentLength( 65535 ); this.setName( '***ERAGE' ); } with ( igame.Expression ) { with ( Operator ) { with ( Function ) { ClassDerive( Average, 'Average', FunctionBase ); Average.prototype.evaluate = function ( operands ) { FunctionBase.prototype.evaluate.call( this, operands ); var res = 0; var len = operands.length; while ( operands.length ) { var op = operands.pop(); if ( !( op instanceof Operand.Number || op instanceof Operand.Boolean ) ) throw new Error( 'Unsupported type' ); res += op.getValue(); } return new Operand.Number( res / len ); } } // with Function } // with Operator } // with namespace
因为没有实现自动注册功能,所以还需要在Function.js中做一些工作:
var igame; importNamespace( 'igame.Expression.Operator' ); igame.Expression.Operator.Function = { 'createFunction': function ( funcName ) { switch ( funcName.toLowerCase() ) { case 'sum': return new igame.Expression.Operator.Function.Sum(); case 'average': return new igame.Expression.Operator.Function.Average(); case 'power': return new igame.Expression.Operator.Function.Power(); default: throw new Error( 'Function \'' + funcName + '\' is not defined' ); } } };
添加函数的工作变得简单了。
相关文章推荐
- JavaScript的表达式解析器-5. 操作符的实现
- javascript 表达式、括号、常用函数和jquery库怎么样实现的分析
- javascript 表达式、括号、常用函数和jquery库怎么样实现的分析
- $.grep()函数——javascript中类似Lambda表达式的实现形式
- JavaScript和C#通用gb2312和utf8编码解码函数简单实现
- 常用效果的实现(Javascript的子父页访问、函数调用)
- Javascript实现类似PHP的print_r函数
- JavaScript基础笔记(五) 函数表达式
- JS通用表单验证函数,基于javascript正则表达式
- 实现一个函数,算出有几种括号的放法可使该表达式得出result值
- JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
- JavaScript中函数表达式和函数声明及函数声明与函数表达式的不同
- 用JavaScript的正则表达式验证网址格式是否正确,方法很多,这只是一个实现的方法.
- 自己写的一些小函数.用正则表达式实现一些小功能~
- 【JavaScript】Javascript中的函数声明和函数表达式
- [Effective JavaScript 笔记]第26条:使用bind方法实现函数的柯里化
- 深入理解JavaScript系列(2):揭秘命名函数表达式
- Ch7 Function Expressions ( JavaScript 中的函数表达式 )
- JavaScript细微差别(函数声明与函数表达式及浏览器差异)