lib/render/client.js
function(path, parent, defaults, ext){
    if( path === undefined ) return undefined;

    if(ext && typeof ext === 'object'){
      if(ext[path] !== undefined)  return ext[path];
    }
    
    // reject to get from computed, return undefined directly
    // like { empty.prop }, empty equals undefined
    // prop shouldn't get from computed
    if(parent === null) {
      return undefined
    }

    if(parent && typeof parent[path] !== 'undefined') {
      return parent[path]
    }

    // without parent, get from computed
    if (parent !== null) {
      var computed = this.computed,
        computedProperty = computed[path];
      if(computedProperty){
        if(computedProperty.type==='expression' && !computedProperty.get) this._touchExpr(computedProperty);
        if(computedProperty.get)  return computedProperty.get(this);
        else _.log("the computed '" + path + "' don't define the get function,  get data."+path + " altnately", "warn")
      }
    }

    if( defaults === undefined  ){
      return undefined;
    }
    return defaults[path];

  }
function(path, parent, defaults, ext){
    if( path === undefined ) return undefined;

    if(ext && typeof ext === 'object'){
      if(ext[path] !== undefined)  return ext[path];
    }
    
    // reject to get from computed, return undefined directly
    // like { empty.prop }, empty equals undefined
    // prop shouldn't get from computed
    if(parent === null) {
      return undefined
    }

    if(parent && typeof parent[path] !== 'undefined') {
      return parent[path]
    }

    // without parent, get from computed
    if (parent !== null) {
      var computed = this.computed,
        computedProperty = computed[path];
      if(computedProperty){
        if(computedProperty.type==='expression' && !computedProperty.get) this._touchExpr(computedProperty);
        if(computedProperty.get)  return computedProperty.get(this);
        else _.log("the computed '" + path + "' don't define the get function,  get data."+path + " altnately", "warn")
      }
    }

    if( defaults === undefined  ){
      return undefined;
    }
    return defaults[path];

  }
function ( path , parent , defaults , ext ) { if ( path === undefined ) return undefined ; if ( ext && typeof ext === 'object' ) { if ( ext [ path ] !== undefined ) return ext [ path ] ; } // reject to get from computed, return undefined directly // like { empty.prop }, empty equals undefined // prop shouldn't get from computed if ( parent === null ) { return undefined } if ( parent && typeof parent [ path ] !== 'undefined' ) { return parent [ path ] } // without parent, get from computed if ( parent !== null ) { var computed = this . computed , computedProperty = computed [ path ] ; if ( computedProperty ) { if ( computedProperty . type === 'expression' && ! computedProperty . get ) this . _touchExpr ( computedProperty ) ; if ( computedProperty . get ) return computedProperty . get ( this ) ; else _ . log ( "the computed '" + path + "' don't define the get function,  get data." + path + " altnately" , "warn" ) } } if ( defaults === undefined ) { return undefined ; } return defaults [ path ] ; }
simple accessor get ext > parent > computed > defaults
simple accessor get ext > parent > computed > defaults