第七天笔记
日期对象
日期对象是用于表示日期时间的一个对象,他里面包含对应设置日期时间及获取日期时间的方法
日期对象的声明
使用new关键字定义
new Date()
无参构造声明 (构建对象方法叫做构造函数)
-
构造函数首字母大写
-
使用new关键字调用构造函数产生新的对象
// 无参构造声明是获取当前的本地时间
var date = new Date()
// 它是以本地时间格式进行显示的UTC(构建标准时间)
console.log(date)
// 传递对应的字符串 以字符串转为对应的事件 (格式不正确会出现Invalid Date)
var date = new Date('2000/2/14 20:50:20')
console.log(date)
// 传递多个数字 最多支持传递6个参数 年 月 日 时 分 秒 如果传入的值超出自动向上递增
// 传递的月份 从0-11
var date = new Date(2000,2,12,10,40,10)
console.log(date)
var date = new Date(2022,10,10)
conlose.log(date)
// 传递一个参数为number值 他将number值识别为毫秒+格林兰治时间
var date = new Date(1000)
日期对象的比对
日期对象在比对的过程中会自动转为毫秒值进行相关的比对计算
var date1=new Date()
var date2=new Date()
console.log(date2-date1)// 毫秒值
console.log(date2+date1)// 这里是字符串进行拼接
关于日期对象的相关方法
get开头 获取
-
获取年 getFullYear
-
获取月 getMonth (0-11)
-
获取日 getDate
-
获取星期 getDay (星期天是第一天 0)
-
获取时 getHours
-
获取分
-
获取秒
-
获取毫秒
-
获取时间戳
-
获取时区偏移量
var date=new Date()
//获取方法
console.log(date.getFullYear());// 年
console.log(date.getMonth());// 月 0开头-11
console.log(date.getDate());// 日
console.log(date.getDay());// 星期几
console.log(date.getHours());// 时
console.log(date.getMinutes());// 分
console.log(date.getSeconds());// 秒
console.log(date.getMilliseconds());// 毫秒
console.log(date.getTime());// 时间戳 可作为唯一标识
console.log(date.getTimezoneOffset())// 获取时区偏移量获取UTC时间 getUTCMonth(抛除时区的影响)
set开头 设置
var date=new Date()
date.setFullYear()
date.setDate()
date.setHours()
date.setMonth()
date.setMilliseconds()
date.setMinutes()
date.setSeconds()
设置UTC时间 getUTCMonth(抛除时区的影响)
转字符串相关方法
var date =new Date()
console.log(date.toDateString());// 转日期
console.log(date.toString());
console.log(date.toTimeString());// 转时间
console.log(date.toISOString());// 遵从ISOS协议的字符串
console.log(date.toLocaleString());// 根据本地格式转为字符串(可以格式化)
console.log(date.toLocaleDateString());// 根据本地格式转为日期字符串
console.log(date.toUTCString());// 返回UTC时间字符串
console.log(date.toLocaleTimeString());// 根据本地格式转为时间字符串
// 设计一个函数返回两个时间之间的天数
function getDay(date1, date2) {
var ms = Math.abs(date1 - date2)
return parseInt(ms / 1000 / 60 / 60 / 24)
}
console.log(getDay(new Date(), new Date('2023/1/21')));
// 设计一个函数返回一个时间七天后的时间以
// YYY - mm - dd hh: mm: ss显示
function formarDate(date) {
return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}
${fn(date.getHours())}:${fn(date.getMinutes())}:${fn(date.getSeconds())}`
}
function fn(number) {
if (number < 10) {
return '0' + number
}
return number
}
function setDayToDate(date, day) {
date.setDate(date.getDate() + day)
return formarDate(date)
}
console.log(setDayToDate(new Date(),7));
// 计算今年一共过了几个星期
function getNowWeekCount() {
var start = new Date('2023/1/1')
var current = new Date()
var startWeek = start.getDay()
var currentWeek = current.getDay()
console.log(startWeek, currentWeek);
return parseInt((getDay(start, current) - (6 - startWeek) - currentWeek) / 7)
}
console.log(getNowWeekCount());
// 打印输出今年最后一个星期天的时间
function getLastSunDay() {
var date = new Date('2023/12/31')
while (true) {
if (date.getDay() == 0) {
return date
}
// 从后往前数
date.setFullYear(2023, 11, getDate()--)
}
}
console.log(formarDate(getLastSunDay()));
对象
概述
对象是一个存储的容器,他是一个引用的数据类型。它里面可以存储一些属性(值)及方法(函数其实就是对应的动作),它里面存储时以key:value的形式存储的(key是唯一标识不可以重复,value是值),可以通过key来访问对应的value
对象的声明(Object)
赋值声明
var obj={}// 空对象
以new关键字来调用构造函数进行声明(new Object)
var obj=new Object() // 空对象
Object 属于顶级父类 所有的对象都是他的子类
对象在比较的时候比较的是地址
扩展:
空对象是true
对象的增删改查
var obj={
name:'jack',
sayHi:function(){
console.log('Hi');
},
children:{
username:'rose'
}
}
// 遍历对象中的属性
for(var key in obj){
console.log(key);
console.log(obj[key]);
}
// 对象名.属性名
console.log(obj.name);
// 通过[]访问
console.log(obj['name']);
obj.sayHi()
console.log(obj.children.username);
console.log(obj["children"]["username"]);
// 增加
obj.sex='男'
console.log(obj);
// 修改
obj.name='tom'
console.log(obj);
// 删除
delete obj.sex
console.log(obj);
this 关键字
this表示这个,this是一个指针引用他没有特定的值,他是根据对应的调用者来执行其引用地址
对象中的函数里的this
对象中函数里的this 指向当前的对象
this在普通函数中指向其调用者。在全局范围内调用者为window在对象中调用者为当前对象
在事件处理中 this指向当前事件的派发者
window对象的两个函数
setInterval 定时器(在一定时间内循环执行某个操作)
写法
以匿名函数的形式
// 参数1为执行的代码 参数2为间隔时间,参数3为传递给参数1的函数的参数(可以省略)
setInterval(function(arg),2000,1)
以具名函数的形式
function fn(arg){
console.log(arg)
}
setInterval(fn,2000)
以字符串形式
setInterval('console.log("hello")',1000)
清除定时器
clearInterval(定时器名)// 清除定时器 一定要做的 如果不做将一直执行
setTimeout 延时器(延迟执行某个操作 执行一次)
用法同上 也要关
总结
setInterval 和 setTimeout 是异步的 也就是说他不会阻塞正常代码的执行
-
setInterval和setTimeout是通过定时触发器线程计时完放入任务对象等待js引擎空闲再执行 他一定慢于js引擎直接执行的代码
-
同步比异步快
-
定时器或延时器开启后必须关闭否则会占用内容
-
不要在定时器中嵌套定时器(如果需要的话那么每一次都需要在外层的定时器都需要关闭内层定时器)