Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2013, 20:23
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 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 имеется и работает....
Ответить с цитированием
  #2 (permalink)  
Старый 07.04.2013, 20:34
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 07.04.2013, 20:37
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

это я знаю.

Меня интересует вопрос.

Почему работает вот это opts.elem без переменной var elem = opts.elem;
Ответить с цитированием
  #4 (permalink)  
Старый 07.04.2013, 20:39
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 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.
Ответить с цитированием
  #5 (permalink)  
Старый 07.04.2013, 20:44
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

тогда почему нельзя сделать тоже самое с остальными?

Например opts.start вместо var start = opts.start.

Тут же тоже идет присвание
Ответить с цитированием
  #6 (permalink)  
Старый 07.04.2013, 20:49
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от hoax
тогда почему нельзя сделать тоже самое с остальными?

Например opts.start вместо var start = opts.start.

Тут же тоже идет присвание
Еще раз:
Сообщение от dmitriymar
потому что объекты передаются по ссылке, если так не сделать любые изменения в функции полученного объекта затронут и передаваемый объект.
разница понятна между простым значением свойства объекта- которое передаётся по значению, и значением свойства- объект, какой передаётся по ссылке?

Не нужно думать "тоже самое , не тоже самое" -нужно учить основы
Ответить с цитированием
  #7 (permalink)  
Старый 07.04.2013, 21:04
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Хмммм.... раз elem:div, где div - значение свойства (elem), является объектом, который передается по ссылке в виде параметра, правильно?

Тогда что значит передача по значению?? В учебнике (где объекты) не нашел такое информации, может пропустил....
Ответить с цитированием
  #8 (permalink)  
Старый 07.04.2013, 21:14
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 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
Ответить с цитированием
  #9 (permalink)  
Старый 07.04.2013, 23:00
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Блин, там как-то более понятно, наверное потому что на простых примерах.... переменная и объект.

А у нас тут значение свойства и объект. эх

Наверное единственно что я понял, это то, что если значение свойства не на что не ссылается, а имеет только лишь значение это есть передача по значению (простая). и то врятли это истина (

Последний раз редактировалось hoax, 07.04.2013 в 23:13.
Ответить с цитированием
  #10 (permalink)  
Старый 07.04.2013, 23:31
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от hoax
Блин, там как-то более понятно, наверное потому что на простых примерах.... переменная и объект.

А у нас тут значение свойства и объект. эх

Наверное единственно что я понял, это то, что если значение свойства не на что не ссылается, а имеет только лишь значение это есть передача по значению (простая). и то врятли это истина (
Ещё раз :
Сообщение от dmitriymar
рано вам ещё такой код рассматривать -основы изучайте .
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг анимации в Safari B~Vladi jQuery 6 31.08.2012 21:33
Отмена действия события во время выполнения анимации gunsoy Общие вопросы Javascript 2 12.06.2012 13:27
Как "заморозить" конечный результат css анимации? FINoM Общие вопросы Javascript 8 28.12.2011 17:52
Определение смещения в момент анимации. 0931454574 jQuery 6 13.05.2011 09:55
Порядок выполнения анимации Tohin jQuery 3 03.07.2009 11:52