ООП в JS o_O

iceman

говнокодер
ООП в JS :confused:

PHP:
function witFader (ElementId) {
  this.elementId = ElementId
  this.startColor = "#fffb91"
  this.finishColor = "#FFFFFF"
  
  this.RGB = {
    start : this.startColor.replace("#","").match(/.{2}/g),
	fininsh : this.finishColor.replace("#","").match(/.{2}/g),
	startPercent : 0,
    finishPercent : 0,
	R : 0,
	G : 0,
	B : 0
  }

  this.config = {
    Time : 50,
	N : 30,
	I : 0
  }

}

witFader.prototype._fade = function (i) {
  alert(i);
  this.config.I = ++i; //изменяем индекс промежуточного цвета
  document.getElementById(this.elementId).style.backgroundColor = this._getMiddleColor();
  if (this.config.I < this.config.N) setTimeout(function(){this._fade(this.config.I);}, this.config.Time);  
}

 witFader.prototype.fade = function() {
	this._fade(0);
}

witFader.prototype._getMiddleColor = function() {
  /*процент содержания конечного цвета в текущем промежуточном цвете;
  изменяется от 0 (не включая 0) до 1 (1 = 100%)*/
  this.RGB.finishPercent = this.config.I/this.config.N;
  /*процент содержания начального цвета в текущем промежуточном цвете;
  изменяется от 1 до 0 (1 = 100%) */
  this.RGB.startPercent = 1 - this.RGB.finishPercent;
  
  //вычисляем значения красного, зеленого, синего промежуточного цвета
  this.RGB.R = Math.floor( ('0x'+this.RGB.start[0]) * this.RGB.startPercent + ('0x'+this.RGB.fininsh[0]) * this.RGB.finishPercent );
  this.RGB.G = Math.floor( ('0x'+this.RGB.start[1]) * this.RGB.startPercent + ('0x'+this.RGB.fininsh[1]) * this.RGB.finishPercent );
  this.RGB.B = Math.floor( ('0x'+this.RGB.start[2]) * this.RGB.startPercent + ('0x'+this.RGB.fininsh[2]) * this.RGB.finishPercent );
  
  return 'rgb('+this.RGB.R+ ',' + this.RGB.G + ',' + this.RGB.B +')'; 
}

var fader = new witFader('fadeBtn');
fader.fade();
первая итерация выполнилась (по таймеру)... на следующей валятся ошибки this.config - undefined

почему, не могу разобраться >:-[

-~{}~ 27.04.10 10:35:

кажись я понял, проблема в setTimeout

если прописать setTimeout(fader._fade, this.config.Time);

fader - это var fader = new witFader('fadeBtn');

НО. я же заранее не могу знать имя объекта в программе... как решить данную проблему?
 
Сверху