一个关于javascript队列的问题硬是没看懂,求教!

teaguest 2012-12-20 10:53:43
小弟,初学javascript,现在下载某网站的视频教程,其它有讲到javascript队列、缓存的问题,硬是看了好几遍,还是看不懂,求教,谢谢!

以上例举了一部分代码:

window.onload=function () {
var div=document.getElementById("one");
function myAnimalte (obj,attrObj,dur,fn,callback) {
var tween;
var callfun;
if(arguments.length==4){
if(fn.length>=4){
tween=fn;
callfun=null;
}else{
tween= Tween.Quad.easeIn
callfun=fn;
}
}else{
tween=fn?fn: Tween.Quad.easeIn;
callfun=callback?callback:null;
}
Queue.queue(obj,"fx",function () {
var start=[]; //开始值数组
var changes=[];//变化量数组
var times=0;
for (var i in attrObj) {
start[i]=css(obj,i);
changes[i]=attrObj[i]-start[i];
}
obj.time=setInterval(function () {
var stops=true;
if(times<dur){
stops=false;
for (var i in attrObj) {
css(obj,i,tween(times,start[i],changes[i],dur))
}

}
times+=60;

if(stops){
for (var i in attrObj) {
css(obj,i,attrObj[i]);

}
clearInterval(obj.time);
if(callfun){
callfun()
}
Queue.dequeue(obj,"fx");
}
},60)
})
}


//---------理解不了开始------------------

//队列
var Queue={
queue:function (elem,key,val) {
var key=key?key:"fx";
var q=Data.setData(elem,key);
if(!val){
return q||[];
}

if(!q){
q=Data.setData(elem,key,[]);
}

if(val instanceof Array){
q=Data.setData(elem,key,val);
}else{
q.push(val);
}

if(key=="fx"&&q[0]!="mark"){
this.dequeue(elem,key)
}

return q;
},
dequeue:function (elem,key) {
var key=key||"fx";
var queue=Data.setData(elem,key);
var fn=queue.shift();
if(fn=="mark"){
fn=queue.shift();
}
if(fn){
if(key=="fx"){
queue.unshift("mark")
}
fn.call(elem)
}
}

}


//缓存
var Data={
cache:{},
uuid:0,
expando:+new Date,
setData:function (elem,key,val) {
var id=elem[this.expando];
if(!id){
id=++this.uuid;
elem[this.expando]=id;
}
if(!this.cache[id]){
this.cache[id]={};
}

if(val){
this.cache[id][key]=val;
}
return this.cache[id][key];
}
}


//---------理解不了结束------------------

myAnimalte(div,{width:100,height:400,opacity:40},600)


<div style="width:200px;height:200px;background-color:red;position:absolute" id="one"></div>
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kilin_Zhang 2012-12-25
  • 打赏
  • 举报
回复
js的缓存是啥,就是定义个变量把数据保存在内存中,暂时不叫它释放。 队列就是个数组。 名字确实很响亮,哈哈
KK3K2005 2012-12-20
  • 打赏
  • 举报
回复
很直白的代码 你想理解什么
未知数 2012-12-20
  • 打赏
  • 举报
回复
就是一些数组操作和一点对象知识,取个队列,缓存这么高级的名字做什么?你不要被名字欺骗,按js的语法理解就行了,需要了解一下js面向对象的基础json写法
plzzz 2012-12-20
  • 打赏
  • 举报
回复
不用理会这些.

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧