AndryG, может быть вот так будет проще понять:
var Родитель = function(фамилия)
{
this.фамилия = фамилия || 'безымянный';
this.public_method = function()
{
alert('Public method')
}
};
var Ребёнок = function()
{
this.public_method = function()
{
alert('Переопределённый public method')
};
this.скажи_чей_ты = function()
{
alert('Моя фамилия: ' + this.фамилия)
}
};
//Класс "Родитель" является предком для класса "Ребёнок",
//у которого переопределён метод public_method.
Ребёнок.prototype = new Родитель('Батькович');
var test = new Ребёнок();
test.скажи_чей_ты(); // => "Моя фамилия: Батькович"
test.public_method(); // => "Переопределённый public method"
alert(test.фамилия); // => "Батькович"
Что ещё можно почитать про ООП в JS:
ООП в JavaScript
Основы и заблуждения насчёт JavaScript