Objekty můžeme rozdělit do dvou druhů, podle toho jakým způsobem se identifikují. Value objekt je typ objektu, který nemá indentitu ani stav. V programování se často hodí některé věci reprezentovat jako n-tici, či výčet vlastností. Příkladem jsou souřadnice, datum.
Vlastnost identity je důležitá zejména pro operaci rovnosti, u které zjištujeme zda si jsou jednotlivé instance rovny. U value objektu porovánáváme hodnoty, které objekt nese. U referenčních objektů můžeme porovnat pouze identitu, nebo referenci.
Každý jazyk pracuje s operátorem rovnosti jinak. Ve funkcionálních jazycích se běžně s datovými typy zachází jako s value objekty, kdežto u OOP jazyků pokud nepřetížíme operátor jinak, srovnáváme objekty skrz jejich reference v paměti.
Value objekty se doporučuje, aby byly vytvářeny jako immutabilní tj. vytvořili pomocí argumentů konstruktoru a pokud je potřeba objekt změnit, je lepší jej zahodit a vytvořit znovu.