define(['./_has', './_toPath'], function (_has, _toPath) {
  // Shortcut function for checking if an object has a given property directly on
  // itself (in other words, not on a prototype). Unlike the internal `has`
  // function, this public version can also traverse nested properties.
  function has(obj, path) {
    path = _toPath(path);
    var length = path.length;

    for (var i = 0; i < length; i++) {
      var key = path[i];
      if (!_has(obj, key)) return false;
      obj = obj[key];
    }

    return !!length;
  }

  return has;
});