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
|
рано вам ещё такой код рассматривать -основы изучайте .
|
|
|
|
|