日期对象Date
概述:date是用于表示日期时间的对象
日期对象的定义(使用new关键词)
1、获取当前的时间(本地的时间)
var date = new Date() //不传参就是获取当前时间
2、获取指定的时间
//传递字符串
var date = new Date('2000/1/1 00:00:00')//指定一个字符串 来指定对应的时间 规定格式
var date = new Date('2000:1:1 00/00/00')//识别不了该格式
//传递多个数值
var date = new Date(2000,10,5,12,15,15)//年 月 日 时 分 秒(传多个参)
//传递数值(此处传递的是毫秒值)
var date = new Date(1000) //一个参数毫秒值 将这个毫秒值去加上对应的1970/1/1 00:00:00,该条语句意思是在原本的格林兰治时间(1970/1/1 00:00:00)的基础上加上了1000毫秒,也就是1秒
日期的比较和计算
日期在对应的比较和计算中会自动变成Number类型的毫秒值(离格林兰治时间的毫秒值)
//date的计算
var date = new Date()
var date1 = new Date('2022/10/1 11:41:00')
console.log(date-date1);//691235077 输出的是一个number类型的毫秒值
console.log(date+date1);//不会变成number类型
console.log(date>date1);//true 转换成number类型进行数值比较
日期对象的方法
get 获取时间
var date = new Date()
console.log(date.getFullYear());//年
console.log(date.getMonth());//月 0-11
console.log(date.getDate());//一个月的第几天
console.log(date.getDay());//一个星期中的第几天 星期天是第一天 0-6
console.log(date.getHours());//获取时间 24为0 0-23
console.log(date.getMinutes());//获取分钟 60为0 0-59
console.log(date.getSeconds());//获取秒钟 0-59
console.log(date.getMilliseconds)//获取毫秒 0-1000
console.log(date.getTime());//获取离1970/1/1的毫秒值(也叫获取时间搓)
console.log(Date.now());//静态方法 now
//辅助相关方法 转换成对应的string
console.log(date.getUTCFullYear());//辅助方法 utc国际标准时间(以上的相关方法都有UTC方法)
console.log(date.toDateString());//将对应的日期转换成string返回
console.log(date.toTimeString());//将对应的时间转换成string返回
console.log(date.toLocaleString());//根据本地的格式 转为对应的字符串返回
console.log(date.toLocaleDateString());//根据本地的格式 将日期转为对应的字符串返回
console.log(date.toLocaleTimeString());//根据本地的格式 将时间转为对应的字符串返回
set 设置时间
//set 设置
date.setFullYear(1999,10,10) //设置年份 可以同时设置月和天
date.setMonth(9,20)//设置月份 可以同时设置天
date.setDate(30) //设置当月的第几天 超过当前月份的天数会自动向上递进 月份会+1
date.setHours(10,15,20,120)//可以同时设置分 秒 毫秒
date.setMinutes(10)//可以同时设置秒 毫秒
date.setSeconds(20)//可以同时设置 毫秒
date.setMilliseconds(150)//毫秒值设设置
date.setTime(1000)//根据对应的毫秒值设置对应的时间 根据格林兰治时间作为参考进行变化
date.setUTCDate(1000)//设置对应的utc时间 根据格林兰治时间作为参考进行变化
重点 月份 0-11月 (获取的月份比实际会小1)星期天为0
对象
概述:对象是一种引用数据类型。它可以存储对应的数据相关的方法(可以拥有相关属性及对应的函数(行为))。对象里面的构成是用key:value(键值对)构成的,一个对应的key对应一个value(key不能重复的 value是可以重复的)。
对象的声明
使用字面量{}
var obj = {
name:'jack',//对应的key是name value是jack 多个键值对使用,隔开
age:18,
}
使用new关键词Object(Object是所有的类和对象的父类 也就是Object是最大的对象)
var obj = new Object();
obj.name = 'jack';
obj.age = 18;
对象的属性及相关方法访问
使用对象名.属性名
var obj = {
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()
使用对象名[属性名字符串]
var obj = {
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
关于对象属性的增删改的相关操作
增(就是使用对象名.属性名进行赋值)
var obj = {}
obj.sex = '男' //给对应的Object添加一个属性进行赋值
修改(就是对于本身有的属性重新赋值)
obj.sex = "女"
console.log(obj);
删除(删除对应的属性,是硬删,不是软删,所以使用delete关键词)
delete obj.sex //删除对应obj的sex属性
console.log(obj);
this
概述:this是一个特殊的对象,它类似于一个指针会指向对应的对象。(在对象的函数内那么对应的this就指向当前这个对象,在外面的函数内this就指向最顶层的对象window)。this指向当前调用者
所有的全局变量以及全局声明的函数都是属于window的(window可以被省略)
//1、创建一个人的对象,添加属性:姓名 年龄 爱好 薪资期望,并有一个打印自身信息的方法,可以输出自身信息;
var person = new Object()
person.name = 'jack'
person.age = 30
person.hobby = '打篮球'
person.salary = 15000
person.print = function(){
console.log(`姓名${person.name} 年龄${person.age} 爱好${person.hobby} 期望薪资${person.salary}`)
}
person.print()
//在外面的函数内容 this指向对应的window
function fn(){
console.log(this);
}
fn()//所有的全局变量以及全局声明的函数都是属于window
window.fn()//window可以被省略
var a = 10
console.log(window.a);//10
定时器和延时器
概述:属于window的两个方法,定时器和延时器是属于异步的行为,按照对应文档流顺序走的代码称为同步代码(他只有一个任务队列),异步代码不按照对应的文档流执行(他会重新开辟一个异步线程),你没有办法知道他什么时候走完。同步代码执行快于异步代码。定时器是定时执行的(执行多次),延时器是延迟执行(执行一次)。
定时器 setInterval
//第一个参数是执行的代码(函数) 第二个参数对应定时的时间 第三个参数传递给对应函数的参数
window.setInterval(handlerFunction,time,arg)
第一种写法(传递匿名函数)
//异步的
setInterval(function(params){
console.log(params)//params是hello
},1000,'hello')
//同步比异步先执行
//setInterval(function(){
console.log('世界');
},0);//就算对应的间隔时间为0它也是异步的
console.log('你好')
第二种写法(传递具名函数)
function fn(params){
console.log('hi'+params);
}
//第二种方式 传递具名函数
setInterval(fn,1000,'jack')
第三种方式(传递字符串[字符串里面书写代码])
//第三种方式 传递字符串(字符串里面书写代码)
setInterval('console.log("hello")',1000)
清除定时器 用于停止对应的定时器操作
clearInterval(对应的定时器id)//这个id就是对应的setInterval返回的number值
var timer = setInterval(function(){
console.log('hello')
},1000)
//清除对应的定时器
clearInterval(timer)
延时器 setTimeout
//执行一次就结束 内存并不会释放
var id = 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可以清除对应的延时器(释放内存)