这是fadeIn()的source viewer但由于某种原因它没有链接到custom()。
另外,作为第二个问题,如何概念化所有这些代码...有很多函数调用,我甚至无法猜测当你调用.fadeIn()或.fadeOut时实际运行了多少代码()。
例如:
fadeIn()
来电animate()
,调用speed()
来调用extend()
......
作为第三个问题:这是面向对象的编程吗?
感谢。
答案 0 :(得分:1)
它不使用setTimeout()
,它使用的setInterval()
位于custom()
中,在animate()
方法的底部调用。
这是一个很好的教程:http://www.schillmania.com/content/projects/javascript-animation-1/
如教程中所述,setTimeout()
计划在调用setTimeout()
函数后的一定时间内发生事件。问题是计划的函数运行需要一些时间,因此下一个超时将在第一个超时的延迟和执行代码所花费的时间之后进行调度。
如果你想:
100ms : function x called
200ms : function x called
300ms : function x called
400ms : function x called
你做了:
function x(){
setTimeout( x , 100);
}
setTimeout( x , 100);
将要发生的事情是:
100ms : function x called
first calls execution time + 200ms : function x called
second calls execution time + first calls execution time + 300ms : function x called
third calls execution time + second calls execution time + first calls execution time + 400ms : function x called
所以你这样做:
function x(){
}
setInterval( x , 100);
答案 1 :(得分:1)
毫无疑问,这种面向对象的编程。函数式编程完全不同(通常看起来也非常不同,搜索python
或haskell
)。我认为你的意思是“命令式编程”(如C
),它不是函数式编程,但也没有对象。
jQuery还支持继承,类似于JavaScripts本机原型继承。
答案 2 :(得分:0)
setInterval通常是一个不好的选择。这是因为一旦设置了一个间隔,它将尝试每N毫秒执行一次,无论现有线程如何进行 - 所以如果你的浏览器已经窒息了一些重大问题,那么setInterval将添加到那个。你必须长时间地考虑使用setInterval,尤其是使用较旧的,线程感知较少的浏览器。更多信息:https://stackoverflow.com/a/5479821/1238884
setTimeout通常更好,因为你只是在你的过程完成时排队下一个超时 - 这样的事情有时会更好:
function foo(params) {
// do stuff here that might block or take time
setTimeout(function() {
foo(params);
}, 1234);
}