(function(scope) { var resolve = scope.resolve = function(reference, context) { if (resolve.RE.test(reference)) { return resolve.unsafe(reference, context); } }; resolve.RE = /^([\w\$]+)?((\.[\w\$]+)|\[(\d+|'(\\'|[^'])+'|"(\\"|[^"])+")\])*$/; resolve.unsafe = function(reference, context) { context = context || scope; try { return eval('context'+(reference.charAt(0) !== '[' ? '.'+reference : reference)); } catch (e) {} }; resolve.or = function(reference, context) { var value = resolve(reference, context); return value === undefined ? reference : value; } })(this);