__proto__ как говорилось выше,
это ссылка на prototype конструктора,
и все,
конструктор в принципе может уже использовать другой прототип, (подменить), но потомок будет иметь тот же объект в __proto__ , что получил при рождении.
все просто, у конструктора prototype у экземпляра - __proto__
Но помоему большинство мессаг этого топика посвещено другому, и к этой теме не посвящены,
глумление короче, все все знают и глумятся 
модно это стало на форуме....
обратно к теме,
я почти не использую __proto__ кроме некоторых случаев,
использование общих для всех экземпляров каунтеров, или ссылок на все экземпляры классы,
пример :

Код:
this.depth = ++this.__proto__.counter + 999;
var o = this.holder = _root.createEmptyMovieClip("alt_"+c+"_mc",this.depth )
это чтбы все экземпляры класса имели различные depth у своих мувиков....
или же

Код:
//*************************************************************************
//*************************************************************************
//
// Primer CLASS created: [17:29:22 , Thursday, September 05, 2002]
//
//*************************************************************************
//*************************************************************************
#initclip
//-------------------------------------------------------------------------
// class constructor
//-------------------------------------------------------------------------
_global.C_PrimerCLASS = function()
{
this.init();
}
//-------------------------------------------------------------------------
// create prototype
//-------------------------------------------------------------------------
C_PrimerCLASS.prototype = new MovieClip();
//-------------------------------------------------------------------------
// class default attributes
//-------------------------------------------------------------------------
C_PrimerCLASS.prototype.allInstances = [];
//*************************************************************************
//-------------------------------------------------------------------------
// class methods
//-------------------------------------------------------------------------
C_PrimerCLASS.prototype.init = function()
{
this.__proto__.allInstances.push(this);
/*
и так далее
*/
}
//-------------------------------------------------------------------------
// class methods
//-------------------------------------------------------------------------
C_PrimerCLASS.prototype.onUnload = function()
{
var a = this.__proto__.allInstances;
for (var i=0;i<a.length;i++)
{
if(a[i] == this)
{
a.splice(i,1);
}
}
}
//-------------------------------------------------------------------------
// call all instances
//-------------------------------------------------------------------------
C_PrimerCLASS.prototype.callAll = function()
{
var a = this.__proto__.allInstances;
for (var i=0;i<a.length;i++)
{
a[i].onChange(this);
}
/*
и так далее
*/
}
//-------------------------------------------------------------------------
// onChange
//-------------------------------------------------------------------------
C_PrimerCLASS.prototype.onChange = function(changed)
{
trace(changed);
}
//-------------------------------------------------------------------------
// register
//-------------------------------------------------------------------------
ASSetPropFlags(_global,"C_PrimerCLASS",131);
Object.registerClass("C_PrimerCLASS",C_PrimerCLASS)
#endinitclip
еще одно применение (у меня) __proto__ это обработака только "локальных" , "собственных" полей класса, и не обработка наследованных,
например хочется в цикле пройтись по всем полям и не трогать наследованные,
вот пример,

Код:
//-------------------------------------------------------------------------
// clone object
//-------------------------------------------------------------------------
Object.prototype.clone = function()
{
var empty_object = new this.constructor();
empty_object.__proto__ = this.__proto__;
return empty_object.copy(this);
}
//-------------------------------------------------------------------------
// copy params of any object
//-------------------------------------------------------------------------
Object.prototype.copy = function()
{
var proto = arguments[0].__proto__;
arguments[0].__proto__ = undefined;
for(var v in arguments[0])
{
this[v] = arguments[0][v];
}
arguments[0].__proto__ = proto;
return this;
}
//-------------------------------------------------------------------------
// clear params by default
//-------------------------------------------------------------------------
Object.prototype.clear = function()
{
var proto = this.__proto__;
this.__proto__ = undefined;
for(var v in this) delete this[v];
this.constructor.apply(this,arguments)
this.__proto__ = proto;
}
удачи