日期对象 Date
概述:date是用于表示日期时间的对象,他里面的主要方法是用于获取日期时间和设置日期时间。
date的声明
使用new Date来声明(不传参)
// 使用new关键词构建的都是对象 对象是引用数据类型
//不传参数获取的是当前的本地时间
vardate=newDate()//获取当前的本地时间
console.log(date);
传递字符串
//传递对应的string类型的参数 根据本地的日期时间格式传递
vardate=newDate('2000/10/9 12:00')
console.log(date);
// var date = new Date('2000:10:9 12/00') //识别不了
// console.log(date);
传递数值(传递是毫秒值 离1970/1/1 00:00:00的时间)
//传递一个数值 传递是毫秒值 根据格林兰治时间 1970/1/1 00:00:00向上递增
var date = new Date(1000)//在原本的格林兰治时间上递增一秒种
console.log(date);
传递多个数值
//传递对应的多个参数 年 月 日 时 分 秒 毫秒 可以省略
vardate=newDate(2000,11,12,12,12,12)//月份取值时0-11
console.log(date);
日期的比较和计算
日期在对应的比较和计算中会自动变成number类型的毫秒值(离格林兰治时间的毫秒值)
//date的计算
vardate=newDate()
vardate1=newDate('2022/10/1 11:41:00')
console.log(date-date1);//变成number类型
console.log(date+date1);//不会变成number
console.log(date>date1);//true
日期对象的方法
获取对应的日期时间(get开头)
var date = new Date()
//获取年
console.log(date.getFullYear());
//获取月
console.log(date.getMonth());//0-11 实际月份会比获取大1
//获取日
console.log(date.getDate());//当月的第几天
console.log(date.getDay());//星期几 星期天是第一天 0-6
//获取小时 0-23
console.log(date.getHours());
//获取分钟 0-59
console.log(date.getMinutes());
//获取秒钟 0-59
console.log(date.getSeconds());
//获取毫秒 0-1000
console.log(date.getMilliseconds());
//获取时间戳 离对应的格林兰治时间的毫秒值
console.log(date.getTime());
//静态方法 now
console.log(Date.now());
//辅助方法 utc国际标准时间 (上面的相关方法都有对应的utc方法)
console.log(date.getUTCFullYear());
设置对应的日期时间 (set开头)
//设置相关得方法
vardate=newDate()
//设置年份
date.setFullYear(2022)
//设置对应得月份
date.setMonth(11)//设置为12月
date.setMonth(13)//自动往递进 当前设置为2月 对应的年份就会往上加1
//设置对应的天数
date.setDate(39)//设置当月的第几天 超过当前月份的天数会自动向上递进 月份会+1
//设置对应的小时 最大为23 超过23 自动向上递进 天数会+1
date.setHours(30)
//设置相关分钟 向上递进 0-59 小时会+1
date.setMinutes(59)
//设置秒钟 跟分钟一样
date.setSeconds(59)
//设置毫秒值 0-999 向上递进
date.setMilliseconds(999)
console.log(date);
//根据对应的毫秒值设置对应的时间
date.setTime(1000)
console.log(date);
//设置对应的utc时间
date.setUTCDate(10)
console.log(date);
辅助相关方法 转为对应的string
console.log(date.toDateString());//将对应的日期转换string返回
console.log(date.toTimeString());//将对应的时间转换string返回
console.log(date.toLocaleString());//根据本地的格式 转为对应的字符串返回
console.log(date.toLocaleDateString());//根据本地的格式 将日期转为对应的字符串返回
console.log(date.toLocaleTimeString());//根据本地的格式 将时间转为对应的字符串返回
对象
概述:对象是一种引用数据类型。他可以存储对应的数据相关的方法(可以拥有相关的属性及对应的函数(行为))。对象里面构成是用key:value(键值对)构成的,一个对应的key对应一个value(key不能重复的 value是可以重复的)。
对象的声明
使用字面量 {}
varobj={
name:'jack',//对应的key是name value是jack 多个键值对使用,隔开
age:18
}
使用new关键词 Object (Object是所有的类和对象的父类 也就是Object是最大的对象)
varobj=newObject()
obj.name='jack'
obj.age=18
对象的属性及相关的方法访问(查询)
使用对象名.属性名
varobj={
name:'jack',//对应的key是name value是jack 多个键值对使用,隔开
age:18,
sayHello:function(){
console.log('hello')
}
}
console.log(obj.name)//jack
console.log(obj.age)//18
//调用对应的sayHello方法
obj.sayHello()
使用对象名[属性名字符串]
varobj={
name:'jack',//对应的key是name value是jack 多个键值对使用,隔开
age:18,
sayHello:function(){
console.log('hello')
}
}
console.log(obj['name'])//jack
console.log(obj['age'])//18
//调用sayHello方法
obj['sayHello']()
对比的相关注意事项
//对象在比对的时候比对是对应的地址
console.log({}=={});//false
关于对象属性的增删改的相关操作
增 (就是使用对象名.属性名进行赋值)
varobj={}
obj.sex='男'//给对应的obj添加一个属性名字为sex
修改 (跟对应的增加操作一致 如果当前属性本身已经具备那么重新赋值就是修改)
varobj={
age:18
}
obj.age=20//当前属性已经存在重新赋值就是修改
console.log(obj)
删除 (使用delete关键词)
varobj={
age:18,
sex:'男'
}
//删除对应得属性 使用delete关键词
deleteobj.sex//删除对应obj的sex属性
console.log(obj);//{age:18}
this
概述:this是一个特殊的对象,他类似于一个指针会指向对应的对象。(在对象的函数内那么对应的this就指向这个对象,在外面的函数内this就指向最顶层的对象window)。this指向当前调用者
所有的全局变量及全局声明的函数都是属于window的(window可以被省略)
varperson=newObject()
person.name='jack'
person.age=30
person.like='泡澡'
person.money=10000
person.print=function(){
console.log(`姓名 ${this.name}年龄 ${this.age}爱好 ${this.like}薪资期望 ${this.money}`);//this指向person
}
person.print()
//在外面的函数内容 this指向对应的window
functionfn(){
console.log(this);
}
fn()//所有的全局变量及全局声明的函数都是属于window
window.fn()//window可以被省略
vara=10
console.log(window.a);
定时器和延时器
概述:属于window的俩个方法,定时器和延时器是属于异步的行为,按照对应文档流顺序走的代码称为同步代码(他只有一个任务队列),异步代码不按照对应的文档流执行(他会重新开辟一个异步线程),你是没有办法知道他什么时候走完。同步代码比异步代码先执行。定时器是定时器执行的(执行多次),延时器是延时执行(执行一次)。
同步和异步
//同步比异步先执行
setInterval(function(){
console.log('世界');
},0);//就算对应的间隔时间为0他也是异步的
console.log('你好');//先你好再打印世界
定时器 setInterval(做动画)
//第一个参数是执行的函数 第二个对应定时的时间(毫秒值) 第三个传递给对应函数的参数
setInterval(handlerFunction,time,arg)
第一种写法(传递匿名函数)
setInterval(function(params){
console.log(params)
},1000,'hello')
第二种写法 (传递具名函数)
functionfn(params){
console.log('hi'+params);
}
//第二种方式 传递具名函数
setInterval(fn,1000,'jack')
第三种方式 (传递字符串 在字符串里面写代码 不推荐)
//第三种方式 传递字符串(字符串里面书写代码)
setInterval('console.log("hello")',1000)
清除定时器 用于停止对应的定时器操作
clearInterval(对应的定时器id)//这个id就是对应的setInterval返回的number值
vartimer=setInterval(function(){
console.log('hello')
},1000)
//清除对应的定时器
clearInterval(timer)
延时器 setTimeout (对应的等待)
概述:延时器时延迟执行 只执行一次 (用法和对应的setInterval一样的)
setTimeout(hanlderFunction,delay,arg)
//执行一次就结束 内存并不会释放
varid=setTimeout(function(){
console.log('三秒后执行');
//清除延时器
clearTimeout(id)
},3000)
总结
日期对象Date 用于获取和设置相关的日期时间
获取方法以get开头 设置方法以set开头
对应的获取月份的值是0-11 比实际月份值小1
对象的声明可以使用字面量{} 也可以使用new Object()
Object是最大的对象 所有的对象都是他的子类
对象里面的存储使用key:value 多个属性使用,隔开
获取对象里面的属性值可以通过对应的属性名来获取 对象.属性名 对象[属性名字符串]
delete 可以删除对象里面的属性
this指向调用者 在对象里面的函数调用者为对象 在外边的函数调用者为window(global对象 顶层对象)
所有的全局变量和全局声明方法都是属于window的 window可以通过对应的属性调用进行调用 window可以省略
setInterval和setTimeout是属于window的俩个方法 这个函数里面的this指向window
setInterval 属于定时器会定时执行 执行多次 如果需要停止使用clearInterval(根据id进行清除 id为setInterval的返回值)进行清除
setTimeout 属于延时器 延迟执行 只执行一次(使用方式和setInterval没有区别)使用对应clearTimeout可以清除对应的延时器(释放内存)