I can think of two possibilities:
Load the hyperref package and use the \autoref macro of that package;
in addition to loading hyperref, load the cleveref package with the option nameinlink, and use the \cref macro to generate the cross-references.
One of the nifty aspects of \cref is that you can call several objects all in one go; the package will take care of any sorting and compressing needs.

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage[colorlinks]{hyperref}
\usepackage[nameinlink,noabbrev]{cleveref}
\begin{document}
\section{In the beginning} \label{sec:begin}
\begin{figure}[h]
\includegraphics[width=0.9\textwidth]{images/example.jpg}
\caption{A figure} \label{fig:example}
\end{figure}
\begin{equation} \label{eq:pyth}
a^2+b^2=c^2
\end{equation}
\section{Next}
As was discussed in \autoref{sec:begin} and shown in \autoref{fig:example}, \dots
\bigskip\noindent
As argued in \cref{sec:begin,fig:example,eq:pyth}, \dots
\end{document}
autorefprovided by packagehhyperref? – Johannes_B Mar 01 '15 at 20:07