code: function(expr, ext){
      var rawget, ext = this.__ext__, touched = {};
      if(expr.type !== 'expression' || expr.touched) return expr;
  
      rawget = expr.get;
      if(!rawget){
        rawget = expr.get = new Function(_.ctxName, _.extName , _.prefix+ "return (" + expr.body + ")");
        expr.body = null;
      }
      touched.get = !ext? rawget: function(context, e){
        return rawget( context, e || ext )
      }
  
      if(expr.setbody && !expr.set){
        var setbody = expr.setbody;
        var filters = expr.filters;
        var self = this;
        if(!filters || !_.some(filters, function(filter){ return !self._f_(filter).set }) ){
          expr.set = function(ctx, value, ext){
            expr.set = new Function(_.ctxName, _.setName , _.extName, _.prefix + setbody);          
            return expr.set(ctx, value, ext);
          }
        }
        expr.filters = expr.setbody = null;
      }
      if(expr.set){
        touched.set = !ext? expr.set : function(ctx, value){
          return expr.set(ctx, value, ext);
        }
      }
  
      touched.type = 'expression';
      touched.touched = true;
      touched.once = expr.once || expr.constant;
      return touched
    }
docs: 1. 用来处理exprBody -> Function 2. list里的循环