![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
МЕГАФЛЭШЕР
Регистрация: May 1999
Адрес: Россия, Москва
Сообщений: 1,181
|
__proto__ как говорилось выше,
это ссылка на prototype конструктора, и все, конструктор в принципе может уже использовать другой прототип, (подменить), но потомок будет иметь тот же объект в __proto__ , что получил при рождении. все просто, у конструктора prototype у экземпляра - __proto__ Но помоему большинство мессаг этого топика посвещено другому, и к этой теме не посвящены, глумление короче, все все знают и глумятся ![]() модно это стало на форуме.... обратно к теме, я почти не использую __proto__ кроме некоторых случаев, использование общих для всех экземпляров каунтеров, или ссылок на все экземпляры классы, пример : this.depth = ++this.__proto__.counter + 999;
var o = this.holder = _root.createEmptyMovieClip("alt_"+c+"_mc",this.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
например хочется в цикле пройтись по всем полям и не трогать наследованные, вот пример,
//-------------------------------------------------------------------------
// 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;
}
Последний раз редактировалось УильямБрэдберри; 05.09.2002 в 19:57. |
![]() |
Часовой пояс GMT +4, время: 16:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|