Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вызов метода из метода (https://javascript.ru/forum/misc/32433-vyzov-metoda-iz-metoda.html)

qwermjk 16.10.2012 12:00

я запускаю метод b() через setTimeout, и из за этого не работает, а если запускаю без него всё работает!
но нужна задержка в полторы секунды, как быть?
setTimeout(c.b,1500);

Skipp 16.10.2012 12:06

Так правильно:
function Class(){
	 this.qqq = function(){
		alert("А не как хочется");
	}

	 this.ggg = function(){

		this.qqq(); // не работает такой способ вызова
	}
}
		
var qqq = function(){
	alert("Работает так как и должно!");
}
		
var t = new Class();
setTimeout(t.ggg, 1500);

qwermjk 16.10.2012 12:06

function Class(){
   this.a = function(){
      alert('все работает');
   }

   this.b = function(){
      this.a(); 
   }
}
var c = new Class();


setTimeout(c.b,1500);

Попробуйте сами этот код!

qwermjk 16.10.2012 12:08

Почему так оно сработало???

qwermjk 16.10.2012 12:12

Почему оно вызвало функцию а не метод? я понял что с этим как то связан setTimeout и this

Skipp 16.10.2012 12:13

Потому, что вызов идёт от объекта window, то есть this там не ваш Class, а window.
function Class(){
	 this.qqq = function(){
		alert("А теперь как надо и как хочется");
	}

	 this.ggg = function(){

		this.qqq(); // не работает такой способ вызова
	}
}
		
var qqq = function(){
	alert("Не запуститься");
}
		

setTimeout(function(){
	 var t = new Class();
	 t.ggg();
}, 1500);

Magneto 16.10.2012 12:14

Цитата:

Сообщение от qwermjk
Почему так оно сработало???

Потому что ты не знаешь основ JavaScript, а уже пытаешься писать псевдоклассы.

qwermjk 16.10.2012 12:19

Skipp,
Спасибо большое!!! я теперь понял ..
...
this.filter = 'div';
this.qqq = 123;
...
this.ttt = function(){
   $(this.filter).each(function(){
      alert(this.qqq)
   });
}

Можно как нибудь такой случай обойти?? без использования объевляния дополнительной переменной

qwermjk 16.10.2012 12:20

Magneto,
не пытаясь что то делать, уровень знаний останется на месте

Skipp 16.10.2012 12:22

Ээмм вот так?:)
this.ttt = function(){
   $("div").each(function(){
      alert(123)
   });
}


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