| 
	| 
	
	| 
		
	| 
			
			 
			
				07.04.2013, 20:23
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 20.09.2012 
						Сообщений: 151
					 
		
 |  |  
	| 
				Непонятки в анимации
			 вот полный код 
function animate(opts) {
var start = new Date;
var timer = setInterval(function() {
var progress = (new Date - start) / opts.duration;
opts.step(progress);
if(progress > 1) progress = 1;
if(progress == 1) clearInterval(timer);
}, 15)
return timer;
}
function animateProp(opts) {
var start = opts.start;
var end = opts.end 
var prop = opts.prop;
opts.step = function(progress){
opts.elem.style[prop] = start+(end-start)*progress+ 'px';
 }
 
 return animate(opts);
}
var div = document.getElementById('opa');
div.onclick = function() {
animateProp({start:0,end:100, prop:'marginLeft', duration:1000, elem:div})
}
Несколько вопросов....
 
1) При клике вызывается ф-я animateProp(а тут ее параменты) 
 
но почему они заключены в {}, если это объект, не разумнее было было сделать так : animateProp(opts= {start:....}) ???
 
2) При вызове ф-и animateProp, те параметры, которые указываются в ({}) - обращаются к ПЕРЕМЕННЫМ? Ну например в параметре указано animateProp({start:0}), а в этой же ф-и : 
 
animateProp(opts) {var start = opts.start}
 
так свойство {start:0}, обращается вначале к var start, а затем переход в opts.start ?
 
Если да, то почему мы не можем поставить (без var) просто opts.start, 
ведь opts.elem имеется и работает....
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 20:34
			
			
			
		 |  
	| 
		
			
			| х.з     |  | 
					Регистрация: 21.11.2010 
						Сообщений: 4,588
					 
		
 |  |  
	| 
	
 
	| Сообщение от hoax |  
	| 1) При клике вызывается ф-я animateProp(а тут ее параменты) 
 но почему они заключены в {}, если это объект, не разумнее было было сделать так : animateProp(opts= {start:....}) ???
 |  
	
 зачем это лишнее вычисление выражения ?  аргумент функции в любом из этих вариантов получит объект
 
	
 
	| Сообщение от hoax |  
	| 2) При вызове ф-и animateProp, те параметры, которые указываются в ({}) - обращаются к ПЕРЕМЕННЫМ? Ну например в параметре указано animateProp({start:0}), а в этой же ф-и : 
 animateProp(opts) {var start = opts.start}
 
 так свойство {start:0}, обращается вначале к var start, а затем переход в opts.start ?
 |  
	
 потому что объекты передаются по ссылке, если так не сделать любые изменения в функции полученного объекта затронут и передаваемый объект. 
 
а в обще-  http://learn.javascript.ru/ 
	
 
	| Сообщение от hoax |  
	| так свойство {start:0}, обращается вначале к var start, а затем переход в opts.start ? |  
	
 чего ? рано вам ещё такой код рассматривать -основы изучайте . 
локальная переменная start инициируется  значением свойства start,  получаемого объекта в качестве аргумента функции			 Последний раз редактировалось dmitriymar, 07.04.2013 в 20:38.
 |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 20:37
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 20.09.2012 
						Сообщений: 151
					 
		
 |  |  
	| это я знаю.
 Меня интересует вопрос.
 
 Почему работает вот это opts.elem без переменной var elem = opts.elem;
 |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 20:39
			
			
			
		 |  
	| 
		
			
			| х.з     |  | 
					Регистрация: 21.11.2010 
						Сообщений: 4,588
					 
		
 |  |  
	| 
	
 
	| Сообщение от hoax |  
	| это я знаю. 
 Меня интересует вопрос.
 
 Почему работает вот это opts.elem без переменной var elem = opts.elem;
 |  
	
 
	
 
	| Сообщение от dmitriymar |  
	| потому что объекты передаются по ссылке, |  
	
 а исходя из кода :
 
	
 
	| Сообщение от hoax |  
	| animateProp({start:0,end:100, prop:'marginLeft', duration:1000, elem:div}) |  
	
 
	
 
	| Сообщение от hoax |  
	| opts.elem.style[prop] = start+(end-start)*progress+ 'px'; |  
	
 это HTML Element какой является объектом 
и присваивание переменной ничего не изменит			 Последний раз редактировалось dmitriymar, 07.04.2013 в 20:43.
 |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 20:44
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 20.09.2012 
						Сообщений: 151
					 
		
 |  |  
	| тогда почему нельзя сделать тоже самое с остальными?
 Например opts.start вместо var start = opts.start.
 
 Тут же тоже идет присвание
 |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 20:49
			
			
			
		 |  
	| 
		
			
			| х.з     |  | 
					Регистрация: 21.11.2010 
						Сообщений: 4,588
					 
		
 |  |  
	| 
	
 
	| Сообщение от hoax |  
	| тогда почему нельзя сделать тоже самое с остальными? 
 Например opts.start вместо var start = opts.start.
 
 Тут же тоже идет присвание
 |  
	
 Еще раз: 
 
	
 
	| Сообщение от dmitriymar |  
	| потому что объекты передаются по ссылке, если так не сделать любые изменения в функции полученного объекта затронут и передаваемый объект. |  
	
 разница понятна между простым значением свойства объекта- которое передаётся по значению, и значением свойства- объект, какой передаётся по ссылке?
 
Не нужно думать "тоже самое , не тоже самое"  -нужно учить основы |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 21:04
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 20.09.2012 
						Сообщений: 151
					 
		
 |  |  
	| Хмммм.... раз elem:div, где div -  значение свойства (elem), является объектом, который передается по ссылке в виде параметра, правильно? 
Тогда что значит передача по значению?? В учебнике (где объекты) не нашел такое информации, может пропустил....  |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 21:14
			
			
			
		 |  
	| 
		
			
			| х.з     |  | 
					Регистрация: 21.11.2010 
						Сообщений: 4,588
					 
		
 |  |  
	| 
	
 
	| Сообщение от hoax |  
	| Хмммм.... раз elem:div, где div - значение свойства (elem), является объектом, который передается по ссылке в виде параметра, правильно? |  
	
 Нет. свойство elem передаваемого объекта инициируется значением переменной div(получает ссылку на объект) и вместе они ссылаются на объект , какой является HtMl элементом -объектом(если не вдаваться в то, что есть Dom)
 
	
 
	| Сообщение от hoax |  
	| Тогда что значит передача по значению?? В учебнике (где объекты) не нашел такое информации, может пропустил.... |  
	
 в гугле забанили? http://www.google.com.ar/search?sour...%8E+javascript 
первая же ссылка http://js-help.net/text/function/pos...arametrov1.php |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 23:00
			
			
			
		 |  
	| 
		
			
			| Профессор       |  | 
					Регистрация: 20.09.2012 
						Сообщений: 151
					 
		
 |  |  
	| Блин, там как-то более понятно, наверное потому что на простых примерах.... переменная и объект.
 А у нас тут значение свойства и объект. эх
 
 Наверное единственно что я понял, это то, что если значение свойства не на что не ссылается, а имеет только лишь значение это есть передача по значению (простая). и то врятли это истина (
 			 Последний раз редактировалось hoax, 07.04.2013 в 23:13.
 |  |  
	| 
		
	| 
			
			 
			
				07.04.2013, 23:31
			
			
			
		 |  
	| 
		
			
			| х.з     |  | 
					Регистрация: 21.11.2010 
						Сообщений: 4,588
					 
		
 |  |  
	| 
	
 
	| Сообщение от hoax |  
	| Блин, там как-то более понятно, наверное потому что на простых примерах.... переменная и объект. 
 А у нас тут значение свойства и объект. эх
 
 Наверное единственно что я понял, это то, что если значение свойства не на что не ссылается, а имеет только лишь значение это есть передача по значению (простая). и то врятли это истина (
 |  
	
 Ещё раз :
 
	
 
	| Сообщение от dmitriymar |  
	| рано вам ещё такой код рассматривать -основы изучайте . |  
	
 |  |  |  |