js笔记(DOM定时器)

88.日期对象Date()(看w3c的手册学习重要的就是Time之类的)
1.日期对象,是系统提供好的
2.constructor是原型上的属性,prototype是构造函数上的一个属性
3.date代表出生那一刻的信息,但凡访问那一刻,那么就永远不会变,不是实时的,就像date.getMinutes()得到的结果那就不管过了多久访问,还是这个值,不会改变。
4.纪元时间:1970年1月1日,计算机始终知道现在的时间距离纪元时间多少毫秒,在经过计算,才得到哪年哪月什么什么的。

Date()                    返回当日的日期和时间。Date()是个构造函数,要是单独执行,不new的话,会返回一个日期的字符串
getDate()                    从 Date 对象返回一个月中的某一天 (1 ~ 31)。getDate()就是构造函数构造出的对象能使用的方法
getDay()                    从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth()    从 Date 对象返回月份 (0 ~ 11)。
getFullYear()    从 Date 对象以四位数字返回年份。
getYear()                    请使用 getFullYear() 方法代替。(getYear是错的)
getHours()    返回 Date 对象的小时 (0 ~ 23)。
getMinutes()    返回 Date 对象的分钟 (0 ~ 59)。
getSeconds()    返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds()    返回 Date 对象的毫秒(0 ~ 999)。
重要:
getTime()                    返回 1970 年 1 月 1 日至今的毫秒数。当前时刻距离纪元时间的毫秒数。
通常我们通俗的讲就叫getTime是时间戳,时间戳就是记录时刻的方式。时间戳往往作为唯一标识来使用。
例1:测试执行1000000圈需要的毫秒数
    var firstTime = new Date().getTime();
    for(var i = 0; i < 100000000; i++){

    }
    var lastTime = new Date().getTime();
    console.log(lastTime - firstTime);
// 4/5/6 差不多就这样
//可以用这种方式测程序的执行效率,然后再优化,这个在程序开发中很重要。

setDate()                  设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth()    设置 Date 对象中月份 (0 ~ 11)。
setFullYear()    设置 Date 对象中的年份(四位数字)。
setYear()                    请使用 setFullYear() 方法代替。
setHours()    设置 Date 对象中的小时 (0 ~ 23)。
setMinutes()    设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds()    设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds()    设置 Date 对象中的毫秒 (0 ~ 999)。
setTime()                    以毫秒设置 Date 对象。
toString()                    把 Date 对象转换为字符串。(date.toString()就是将时间转换为字符串形式)

set的使用:像限时抢购,倒计时快结束的时候,就是马上要接近它设定的那个时间点了,
可以利用toString字符串进行比对,还可以利用getTime得到当前的时间点与设定的时间点做差,小于1000毫秒,就看作是吻合了。
例1:
var date = new Date();
date.setDate(15);
再访问date就会是更改后的日期了,更改的是日,而且星期几也会随之改变的
实际日期:Thu Aug 30 2018 15:52:55 GMT+0800 (中国标准时间)
set时候的日期:Fri Aug 31 2018 15:52:55 GMT+0800 (中国标准时间)
例2:设定时间,到这个时候就打印文字
  var date = new Date();
    date.setDate(7);
    setInterval(function (){
        if(new Date().getTime() - date.getTime() > 1000){
            console.log('小美女');
        }
    },1000)
//setInterval就是过多久执行一次函数
//通过setDate还可以实现闹钟的功能
//setTIme()也可以作为设定时间使用,但是一般不用除非是你拿到别人的getTime再set回去有特殊的需求,否则通过人工的方式set不现实,太大了

90.定时器:定时器并不准,还有,下面的四个方法使全局对象上的方法,内部函数this指向window
1.setInterval
用法:里面有个函数,函数后面加一个时间,每隔多长时间执行一次函数。
可以用作定时器,是全局里的方法,即使不window执行时也会上GO中找。
每次执行都会返回一个数字作为它的唯一标识,如果有两个setInterval的话,第一个就返回1,第二个就返回2等等等作为它的唯一标识。
另一种形式(很少很少用):setInterval("console.log('a')",1000);,每隔1000毫秒执行一次字符串里的代码。    
例1:每隔1000毫秒执行一次函数
    var time = 1000;
    setInterval(function (){
        console.log('a');
    },1000)
    time = 2000;
//最初time为1000,然后每隔1000毫秒执行一次正确,但是,这个函数识别time只识别一次,也就是后面更改了time对函数没影响,time依旧是最初是别的1000,没有更改。
例2:用作查树
    var i = 0;
    setInterval(function (){
        i++;
        console.log(i);
    },1000)
    time = 2000;
探究问题:定时器到底准不准
    var firstTime = new Date().getTime();
    setInterval(function(){
        var lastTime = new Date().getTime();
        console.log(lastTime - firstTime);
        firstTime = lastTime;
    },1000)
//每次的差有时候是1000或者999或者等等,说明定时器setInterval并不准,正常应该是都是1000
//一方面的原因是因为setInterval只是每隔1000毫秒将任务放在执行队列中,什么时候执行谁都不知道
//不止这个方面的原因,因为若如此的话,应该只是慢的问题,但是有时候慢有时候快,所以还有别的原因。
书籍:你不知道的js还有,js权威指南,还有js高级程序设计
2.clearInterval:利用setInterval返回的唯一标识,清空setInterval令它停下来。
例1:当执行到10之后就不再执行了
    var i = 0;
    var timer = setInterval(function(){
        console.log(i++);
        if(i > 10){
            clearInterval(timer);
        }
    },1000)
3.setTimeout:隔多少秒执行,并且只执行一次,
例1:1秒之后执行打印a,并且就执行一次
    setTimeout(function(){
        console.log('a');
    },1000)
//实际应用时,例如电影的试看期,一般就能看多少多少秒,多少秒之后就不能用了,就可以用这个函数,
4.clearTimeout():同clearInterval()用法一样,利用setTimeOut的唯一标识(不会和setInterval重叠的,是依次的),清空setTimeOut。
例1:a一直不会出来,还没执行呢,就被清了;
    var timer = setTimeout(function(){
        console.log('a');
    },1000)
    clearTimeout(timer);

发布了53 篇原创文章 · 获赞 12 · 访问量 9930

猜你喜欢

转载自blog.csdn.net/LFY836126/article/details/82227560
今日推荐