老师讲课内容:
函数生命周期:
1. 开始执行前:
创建执行环境栈(数组): 临时保存正在执行的函数的执行环境。
向执行环境栈中压入第一个默认函数main()。
创建全局作用域对象window。
2. 定义函数时:
创建函数对象,封装函数定义
声明函数名变量,引用函数对象
函数对象的scope属性引用回创建函数时的作用域。
3. 调用函数时:
ECS中压入一个新的元素(执行环境)记录新函数的调用。
创建一个活动对象,保存本次函数调用用到的局部变量。
ECS中的新执行环境元素,引用活动对象。
活动对象中的parent属性引用函数的scope指向的父级作用域对象。
执行过程中: 优先使用活动对象中的局部变量。
局部没有,才延parent向父级作用域找。
4. 函数调用后:
执行环境栈中本次函数的执行环境出栈。
导致活动对象被释放
导致局部变量一同释放
图示:
前三步
第四步
可以使用JavaScript 的setInterval方法和用法。
setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
setInterval(code,millisec[,"lang"])。
语法
参数
code 必需。要调用的函数或要执行的代码串。 。
millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。
JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
在1995年时,由Netscape公司的Brendan Eich,在网景导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。[1]。
为了取得技术优势,微软推出了JScript,CEnvi推出ScriptEase,与JavaScript同样可在浏览器上运行。为了统一规格,因为JavaScript兼容于ECMA标准,因此也称为ECMAScript。
JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。[3]。
是一种解释性脚本语言(代码不进行预编译)。[4]。
主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。[4]。
可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。[4]。
跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
是用来设置定时执行的,JavaScript中的setInterval用法如下:
setInterval动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。可以使用本动作更新来自数据库的变量或更新时间显示。setInterval动作的语法格式如下:
setInterval(function,interval[,arg1,arg2,......argn])。
setInterval(object,methodName,interval[,arg1,arg2,.....argn])。
第一种格式是标准动作面板中setInterval函数的默认语法,第二种格式是在专家模式动作中使用的方法。
其中的参数function是一个函数名或者一个对匿名函数的引用。object参数指定从Object对象派生的对象。methodName制定 object参数中要调用的方法。
interval制定对function或methodName调用两次之间的时间,单位是毫秒。后面的arg1等是可选的参数,用于制定传递给function或是methodName的参数。
setInterval它设置的时间间隔小于动画帧速(如每秒10帧,相当于100毫秒),则按照尽可能接近interval的时间间隔调用函数。
而且必须使用updateAfterEvent动作来确保以足够的频率刷新屏幕。如果interval大于动画帧速,则只用在每次播放头进入某一帧是才调用,以减小每次刷新屏幕的影响。
下面的例子每隔1秒调用一次匿名函数。
setInterval(function(){trace("每隔1秒钟我就会显示一次")},1000);//这里的function(){}是没有函数名的函数。成为匿名函数,后面的1000是时间间隔,单位是毫秒。
下面的例子为我们展示如何带参数运行。
function show1(){。
trace("每隔1秒显示一次");。
function show2(str){。
trace(str);。
setInterval(show1,1000);。
setInterval(show2,2000,"每隔2秒我就会显示一次");上面已经将函数的setInterval方法介绍了。
下面我们将介绍对象的setInterval方法。
首先,写一个setInterval在动作中调用对象的方法的例子,该例子不需要传递参数。
myobj=new Object();//创建一个新的对象。
myobj.interval=function){。
trace("每隔1秒显示一次");。
}//创建对象的方法。
setInterval(myobj,"interval",1000);//设定时间间隔调用对象的方法。
接下来介绍如何传递参数。其实道理和函数的传递参数是一样的。
myobj=new Object();。
myobj.interval-function(str){。
trace(str);。
setInterval(myobj,"interval",2000," 每隔2秒我就会显示一次");。
注意。要调用为对象定义的方法时,必须在专家模式中使用第二种语法格式。
这样子的话呢,我们来作一个动态显示时间的画面。可以用下面的代码实现。
setInterval(show,1000);。
function show(){。
time=new Date();。
hour=time.getHours();。
minu=time.getMinutes();。
sec=time.get.Seconds();。
datetime=hour+":"+minu+":"+sec;。
}//这里的datetime是一个动态文本框的变量名字。
这样子呢,setInterval这个方法大家应该学的很好了。现在呢,我们学习clearInterval.。
clearInterval动作的作用是清楚对setInterval函数的调用,它的语法格式如下clearInterval(intervalid);intervalid是调用setInterval函数后返回的对象。
下面举一个简单的例子。
function show(){。
trace("每隔一秒显示一次");。
var sh;
sh=setInterval(show,1000);。
clearInterval(sh);。
在之前基础上对组件进行了生命周期的加工(初始化、获取资源、渲染、更新、销毁等),理顺了组件的各个阶段,有助于对组件实现(从初始化到销毁)的理解。 并且借助于组件各个阶段的钩子可以对组件有更好的利用和扩展。
setInterval()是一种定时器,它按照指定的设置时间(以毫秒计)来调用函数的方法。clearInterval()是结束定时器的循环调用函数。除非调用clearInterval()方法,否则无限循环执行回调函数。例如:
var i = 0;//定义一个变量i。
var t = setInterval(function(){。
if(i === 60){。
clearInterval(t);//假如i是60,则清除此定时器,结束循环回调。
}else{
i++;
console.log(i);。
}
},1000);//设置每1000毫秒(一秒钟)回调一次函数。
setTimeout()同理也是一种定时器,对应的结束定时的方法是clearTimeout()。与setInterval()不同的是,此定时器只执行一次,例如:
var t = setTimeout(function(){。
console.log("OK");。
},1000);//一秒后在控制台输出字符串"OK"。