Programarea bazată pe prototip este un stil de programare orientată pe obiecte în care reutilizarea comportamentului (cunoscută sub numele de moștenire) se realizează printr-un proces de reutilizare a obiectelor existente care servesc drept prototipuri. Acest model poate fi cunoscut și ca programare prototip, orientată pe prototip, fără clasă sau bazată pe instanțe.

Programarea bazată pe prototip folosește obiecte generalizate, care pot fi apoi clonate și extinse. Folosind fructul ca exemplu, un obiect „fruct” ar reprezenta proprietățile și funcționalitatea fructelor în general. Un obiect „banană” ar fi clonat din obiectul „fruct” și ar fi adăugate proprietăți generale specifice bananelor. Fiecare obiect individual "banană" ar fi clonat din obiectul generic "banană". Comparați -o cu paradigma bazată pe clasă , unde o clasă de „fructe” ar fi extinsă de o clasă de „banane” .

Primul limbaj de programare orientat spre prototip a fost Self, dezvoltat de David Ungar și Randall Smith la mijlocul anilor 1980 pentru a cerceta subiecte în proiectarea limbajului orientat obiect. De la sfârșitul anilor 1990, paradigma fără clase a devenit din ce în ce mai populară. Unele limbaje actuale orientate spre prototip sunt JavaScript (și alte implementri ECMAScript, cum ar fi JScript și ActionScript 1.0), Lua, Cecil, NewtonScript, Io, Ioke, MOO, REBOL și AHK.