首页 > 代码库 > uglify2之TreeTransformer
uglify2之TreeTransformer
所有的节点的transform方法都对应同一个函数:
node.DEFMETHOD("transform", function(tw, in_list){ var x, y; tw.push(this); if (tw.before) x = tw.before(this, descend, in_list); if (x === undefined) { if (!tw.after) { x = this; descend(x, tw); } else { tw.stack[tw.stack.length - 1] = x = this.clone(); descend(x, tw); y = tw.after(x, in_list); if (y !== undefined) x = y; } } tw.pop(); return x; });
不同的是每个节点可以有不同的descend方法
AST_Node的descend方法为一个空函数
以下节点有自定义的descend方法
AST_LabeledStatement,AST_SimpleStatement,AST_Block,AST_DWLoop,AST_For,AST_ForIn,
AST_With,AST_Exit,AST_LoopControl,AST_If,AST_Switch,AST_Case,AST_Try,AST_Catch,
AST_Definitions,AST_VarDef,AST_Lambda,AST_Call,AST_Seq,AST_Dot,AST_Sub,
AST_Unary,AST_Binary,AST_Conditional,AST_Array,AST_Object,AST_ObjectProperty
uglify2之TreeTransformer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。