Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Инкапсуляция, чтение файла и event в firefox (https://javascript.ru/forum/events/30819-inkapsulyaciya-chtenie-fajjla-i-event-v-firefox.html)

platedz 17.08.2012 13:53

Цитата:

Сообщение от vadim5june (Сообщение 198216)
а почему Вы event не передаете?
topmenu.replace.call(topmenu,"filesload",e,function(u,f){...
...
replace: function(s,evn,e)
                    {
this[s](evn,e);
 }

Спасибо, так и сделал. Видимо я думал, что event глобальный объект, который доступен всегда при обращении к event. Т.е. this[s](event,e), определиться из любого места.

Спасибо еще раз

platedz 21.11.2012 18:08

Здравствуйте, подскажите пожалуйста, есть примерно следующий плагин на jquery, те. плагин как и все плагины на jquery, но я никак не соображу как получить доступ к объекту и его методам

(function ($) {
	var C = function () {
		
			defaults = {
			......
			},
			fillRGBFields = function  (a, b) {
			......
			}

	});
})(jQuery);


Как мне сделать что-то навроде for(i in C) alert(i + " : " + C[i])

platedz 01.01.2013 23:59

Подскажите, пожалуйста, а почему

если при инкапсуляции вызвать Блок
return
{
и поставить скобку на новую строку, return не работает

dmitriymar 02.01.2013 00:07

Цитата:

Сообщение от platedz
и поставить скобку на новую строку, return не работает

это особенности . return как раз таки и сработает. :)
то что возвращает return ,должно быть записано в одну строчку с ним. Иначе, перенос интерпретатор\компилятор воспринимает как окончание команды return, воспринимает как- ;

platedz 02.01.2013 00:39

Спасибо за ответ.
Я к тому что for if и тд. Нормально обрабатывают блок, когда { на другой строке, а чем return так отличился?

dmitriymar 02.01.2013 01:06

Цитата:

Сообщение от platedz
Я к тому что for if и тд. Нормально обрабатывают блок, когда { на другой строке, а чем return так отличился?

Цитата:

Сообщение от dmitriymar
это особенности .

Цитата:

Сообщение от dmitriymar
то что возвращает return ,должно быть записано в одну строчку с ним.

Цитата:

Сообщение от dmitriymar
Иначе, перенос интерпретатор\компилятор воспринимает как окончание команды return, воспринимает как - ;


что не ясного в ответе,чтоб задавать вопрос повторно ? что это особенность "языка" с return?
чем отличается особенная ситуация от обычной?
тем, что она особенная -она исключение.

platedz 02.01.2013 01:20

Я понял особенности, просто может еще где-то есть подобные особенности, а я не знаю.

platedz 31.03.2013 21:44

Подскажите, как правильно выполнить следующее

for(var i=0; i<document.getElementsByName("my_name").length; i++)
{
	document.getElementsByName("my_name")[i].onkeyup = function(i)
	{
		console.log(i);
	}
}

Aetae 31.03.2013 22:01

Цитата:

Сообщение от platedz (Сообщение 243608)
Подскажите, как правильно выполнить следующее

for(var i=0; i<document.getElementsByName("my_name").length; i++)
{
	document.getElementsByName("my_name")[i].onkeyup = function(i)
	{
		console.log(i);
	}
}

Хрестоматийный пример для использования замыканий.

Кстати так:
for(var i=0; i<document.getElementsByName("my_name").length; i++){
	document.getElementsByName("my_name")[i].onkeyup = ...
}
делать не рекомендуется, ибо каждую итерацию цикла у вас сначала идёт получение заново всех элементов ByName("my_name"), затем получение заново длины, а после, в теле цикла, ещё раз получение всех элементов ByName("my_name"). Всё это вещи тратящие вычислительное время. В современных браузерах предусмотрено всяческое кеширование подобных случаев на уровне движка, но я бы не рекомендовал слишком уж полагаться на это.
Более экономичный вариант:
for(var i=0, my_name=document.getElementsByName("my_name"), l=my_name.length; i<l; i++){
	my_name[i].onkeyup = ...
}


P.S. Ну и лично мне больше всего нравится для таких случаев использовать обратный перебор:) :
var my_name=document.getElementsByName("my_name"), i=my_name.length; 
while(i--){
	my_name[i].onkeyup = ...
}




Пример: Если не разобрались сами с замыканиями.
for(var i=0, my_name=document.getElementsByName("my_name"), l=my_name.length; i<l; i++){
	my_name[i].onkeyup = function(i){
		return function(){
			console.log(i);
		}
	}(i) 
}

platedz 31.03.2013 22:14

Большое спасибо.
Посмотрел пример и вышло так
for(var i=0; i<document.getElementsByName("my_name").length; i++)
{
	document.getElementsByName("my_name")[i].onkeyup = function(x)
	{
		return function(){console.log(x)}; 
	}(i)
}


Не ясно только, почему не выходит так

for(var i=0; i<document.getElementsByName("my_name").length; i++)
{
	document.getElementsByName("my_name")[i].onkeyup = function(x)
	{
		console.log(x)
	}(i)
}


Буду благодарен за разъяснения


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