function jsEvalWith(expr, context) {
  try {
    with (context) {
      return eval('[' + expr + '][0]');
    }
  } catch (e) {
    return null;
  }
}
Wrapper for eval with a context. NOTE: The style guide
deprecates eval, so this is the exception that proves the
rule. Notice also that since the value of the expression is
returned rather than assigned to a local variable, one major
objection aganist the use of the with() statement, namely that
properties of the with() target override local variables of the
same name, is void here.

@param {String} expr
@param {Object} context
@return {Object|Null}