code: function get(o, path, defaultValue) {
      var props = path.split('.'),
          i,
          // iterative variable
      p,
          // current property
      success = true;
  
      for (i = 0; i < props.length; i += 1) {
          p = props[i];
          if (has(o, p)) {
              o = o[p];
          } else {
              success = false;
              break;
          }
      }
  
      return success ? o : defaultValue;
  }
docs: Obtains a value from an object following a path with the option to
  return a default value if that object was not found
  
  @param {Object} o    object in which to look for the specified path
  @param {String} path string representing the chain of properties to
  to be followed (form: "obj.obj.obj")
  @param {Any}    [defaultValue] value to return if the path does not
  evaluate successfully: default undefined
  @memberOf object
  @return {Any} object evaluated by following the given path or the default
  value should that object not exist