Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как внутри класса вызвать метод из соседнего метода (https://javascript.ru/forum/misc/6137-kak-vnutri-klassa-vyzvat-metod-iz-sosednego-metoda.html)

Shahurik 13.11.2009 01:28

Как внутри класса вызвать метод из соседнего метода
 
Доброй ночи.
Проблема: есть класс для изменения прозрачности объекта. Методы: set — установить прозрачность объекта, fade — плавно изменить прозрачность. fade должна вызывает в интервале функцию set. Сначала попробовал вызвать через this.set, однако выдается ошибка «this.set is not a function». Потом определил this в this.self и this.set в this.self.set. Та же ошибка: «this.self.set is not a function»

var opaque=function(elem){
		this.elem=elem;
		this.set=function(opacity){
			this.elem.style.filter=(opacity==1)?"":"alpha(opacity="+opacity*100+")";
			this.elem.style.opacity=opacity;
		};
        this.self=this;//переопределение this
		this.self.set=this.set;
		this.fade=function(from,to,speed){
			opacity=from;
			step=(to>from)?.01:-0.01;
			run=setInterval(function(){
				opacity+=step;
				this.self.set(opacity);//проблемное место
				if(opacity==to){clearInterval(run);}},
				speed   
            );
		};
};
<div id="block">Привет!</div>
<a href="#" id="link">Плавно убрать</a>
<script type="text/javascript">
	var f=new opaque(document.getElementById("block"))
	document.getElementById("link").onclick=function(){f.fade(1,0,1);}
</script>


Подскажите пожалуйста, что неправильно?
Заранее спасибо :–)

Kolyaj 13.11.2009 08:30

Цитата:

Сообщение от Shahurik
this.self=this;//переопределение this

Вы this сохраняете в свойстве у this. Это все равно, что запасной ключ от багажника хранить в самом багажнике.
var self = this;
// и т.д.

Shahurik 13.11.2009 12:20

Спасибо!


Часовой пояс GMT +3, время: 17:55.