我喜欢在一些JS插件中挖掘代码。我查看carousel.js的代码并看到以下代码行:
this.cycle(true)
我并不完全知道这行代码在做什么。基本上我console.log
ged并发现carousel.js中的函数按以下顺序执行:
页面加载:
"inside on" ------------------- [1]
"inside Plugin" --------------- [2]
"inside Carousel" ------------- [3]
"inside pause" ---------------- [4]
"inside cycle" ---------------- [5]
滑块滑动后:
"inside next" ------------------- [1]
"inside Slide" ------------------ [2]
"inside getItemForDirection" ---- [3]
"inside getItemIndex" ---------- [4]
"inside pause" ----------------- [5]
"inside getItemIndex" ---------- [6]
"inside cycle" ----------------- [7]
该行代码位于pause()
,line 99内。
这段代码似乎不是一个正在设置的标志,甚至不是在cycle()
内传递的参数,因为cycle
不接受这样的参数。那么这段代码到底在做什么呢?
此外,如果没有这行代码,旋转木马的工作效果非常好。
答案 0 :(得分:0)
原型函数已在第55行Carousel.prototype.cycle = function (e) {
中为各个事件创建。
答案 1 :(得分:0)
以下是发生的事情:
Carousel.cycle接受一个参数(我不知道为什么你认为它没有),并测试这个参数的值是否真实。如果不是,则将this.paused
设置为false。这里令人困惑的是语法:
Carousel.prototype.cycle = function (e) {
e || (this.paused = false)
第二行充当e参数的if语句,隐式将其转换为boolean,只有在为false时,继续处理设置paused
属性的第二部分。
答案 2 :(得分:0)
Carousel.prototype.cycle = function (e) {
e || (this.paused = false)
this.interval && clearInterval(this.interval)
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
第二行是诀窍。通常,它会触发cycle
功能,而不会将paused
设置为false